我想声明一个这个函数服从的类型定义:
var a : MyInterface = function(func : <T>(t: T) => number) {
console.log("do Nothing");
return func(123) + " someString";
}
我正在尝试的是构建一个接口,该接口使用函数f返回一个数字作为参数并返回一个字符串本身。根据我的理解,接口应该是这样的。
interface MyInterface {
(func: (<T>(t: T) => number)) => string;
}
但它不起作用,抱怨最后的'=&gt;',说':' expected
。
如果我只是省略返回类型'string',编译器很高兴。我该怎么办?
答案 0 :(得分:2)
在界面中,可调用签名的返回类型使用:
而不是=>
。所以在你的情况下它将是
interface MyInterface {
(func: (<T>(t: T) => number)): string;
}
但是如果你只想声明一个函数类型,那么使用再次使用=>
的简写语法会更直接。
type MyFunction = (func: (<T>(t: T) => number)) => string
前一种语法的优点是它允许您定义过载签名和混合类型,这些类型不仅可以调用,而且还具有属性。