使用TypeScript声明函数类型

时间:2017-03-05 08:03:15

标签: javascript typescript

我知道我之前已经问过这个问题,我找不到问题也不记得答案。

我有一个具有相同签名的几个方法的对象:

{

  foo: function(){
    return [];   // (return Array<T>)
  },

  bar: function(){
    return [];   // (return Array<T>)
  },

  baz: function(){
    return [];   // (return Array<T>)
  }

}

当我声明此对象的接口时:

interface SomeObj {

   foo: Function,
   bar: Function,
   baz: Function

}

但是我想为这些函数声明一个类型,如下所示:

  type TestSuiteGetterFn <T>() => Array<T>;

  interface SomeObj {

       foo: TestSuiteGetterFn,
       bar: TestSuiteGetterFn,
       baz: TestSuiteGetterFn

    }

但这不会编译。

我很少发现像谷歌这么难的东西。

1 个答案:

答案 0 :(得分:6)

在声明您的功能类型时,您只是忘记了等号。

TypeScript Playground Permalink

type TestSuiteGetterFn<T> = () => Array<T>;

interface SomeObj {
     foo: TestSuiteGetterFn<string>,
     bar: TestSuiteGetterFn<number>,
     baz: TestSuiteGetterFn<string>
}