Home > OS >  Object-like type definition: can someone explain?
Object-like type definition: can someone explain?

Time:02-17

I'm working with a library that uses the following type definition:

export interface Auth0ContextInterface<TUser extends User = User> extends AuthState<TUser> {
  getAccessTokenSilently: {
    (options: GetTokenSilentlyOptions & { detailedResponse: true }): Promise<
      GetTokenSilentlyVerboseResponse
    >;
    (options?: GetTokenSilentlyOptions): Promise<string>;
    (options: GetTokenSilentlyOptions): Promise<
      GetTokenSilentlyVerboseResponse | string
    >;
  };
  
  ...

Can someone explain what the getAccessTokenSilently definition means? I assumed that it was another way of joining multiple types, but none of these work in the codebase I'm working on.

Help would be much appreciated!

CodePudding user response:

It a function overload type definition,

The getAccessTokenSilently method on oyur object has 3 different definitions :

  • (options: GetTokenSilentlyOptions & { detailedResponse: true }): Promise< GetTokenSilentlyVerboseResponse>
  • (options?: GetTokenSilentlyOptions): Promise<string>;
  • (options: GetTokenSilentlyOptions): Promise< GetTokenSilentlyVerboseResponse | string>;
  • Related