TypeScript: Reuse function definitions in an interface definition

Viewed 2448

In the following piece of TypeScript definition code, I'd like to reuse the function type of baz for the baz property of the Foo interface.

declare module 'foo' {

  /* Not all exports will be reused in the interface. */
  export function bar(a: string): string

  /* Imagine a big and verbose function
     definition with plenty overloadings: */
  export function baz(a: number): number
  export function baz(a: Overloaded): number

  interface Foo {

    /* The interface is for a function, so I cannot use module */
    (a: string): string

    /* how do I reuse the full definition of the baz function? */
    baz

  }

  export default Foo

}

I have not been able to find a way to reuse the definition other than copy-paste. Is there a better way than copy-paste? It's alright if I have to define the interface first and reuse its members as static exports.

1 Answers
Related