我知道我之前已经问过这个问题,我找不到问题也不记得答案。
我有一个具有相同签名的几个方法的对象:
{
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
}
但这不会编译。
我很少发现像谷歌这么难的东西。
答案 0 :(得分:6)
在声明您的功能类型时,您只是忘记了等号。
TypeScript Playground Permalink
type TestSuiteGetterFn<T> = () => Array<T>;
interface SomeObj {
foo: TestSuiteGetterFn<string>,
bar: TestSuiteGetterFn<number>,
baz: TestSuiteGetterFn<string>
}