函数类型注释打字稿

时间:2016-04-04 08:13:39

标签: typescript

我想知道当形式参数名称不必匹配时,类型注释函数的含义是什么:

let foo: (x:number, y:number) => number = (a:number, b:number) => a+b    

我的意思是,(x:number, y:number) => number是什么意思?我认为如果我在定义函数类型时可以编写(number, number) => number会更有意义,特别是如果'形式参数名称'无论如何都不匹配。

我必须在函数类型中定义xy之类的名称是什么原因?打字稿不能推断出函数类型(a:number, b:number) => number吗? 我知道我可以省略显式类型注释,但在我的情况下,我总是想要显式类型注释。

2 个答案:

答案 0 :(得分:1)

例如考虑Array.prototype.map()

的声明
public map(mapper: (value?: T, index?: number, list?: T[]) => any): any[];

您需要变量名称,因为它们具有关于方法所期望的参数的重要信息,只是类型不够。正如你所说,你可以避免使用类型,但这样你就可以使用你的代码尽可能多地提供关于你的方法的信息。

答案 1 :(得分:1)

回复位于Typescript FAQ

这里没有说明,但似乎是为了使文档更具可读性而做出的决定,因为参数名称可能暗示了参数值。