Search code examples
jsontypescriptobjecttypesparentheses

What does object with parentheses in place of keys in TypeScript mean?


What does object with parentheses in place of keys in TypeScript mean?

E.g. here

foo(success: { (): void; (): void; }) {}

I can not understand what does the success parameter represent.


Solution

  • { (): void; (): void; } is just a callable type. The second (): void is a function overload. Though in this case it does nothing. In less magical way it could be written as:

    interface Success {
      (): void
      (): void
    }
    
    function foo(success: Success) {}
    

    This is mostly equivalent to foo(success: () => void) {}.