TypeScript:在接口定义中重用函数定义

时间:2017-08-03 09:26:30

标签: typescript reusability

在下面的TypeScript定义代码中,我想为baz接口的baz属性重用Foo的函数类型。

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

}

除了复制粘贴之外,我还没有找到重用定义的方法。有比复制粘贴更好的方法吗?如果我必须首先定义接口并将其成员重用为静态导出,那就没关系。

1 个答案:

答案 0 :(得分:2)

baz的类型可以在类型计算中重复使用(在这种情况下为typeof|):

// Foo will contain 2 overloads of baz
type Foo = { (a: string): string; } | typeof baz;

但请注意,typeinterface有所不同。例如它不能在class .. implements ..中使用。