2016-04-04 144 views
2

不知含义类型如下注释功能是什么时候正式参数名称不必匹配:功能类型标注打字稿

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? 而且我知道我可以省略显式类型注释,但在我的情况下,我总是需要显式类型注释。

回答

1

例如,考虑Array.prototype.map()声明:

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

您需要变量名因为他们有关于参数的方法需要的重要信息,只是类型是不够的。正如你所说,你可以避免这些类型,但是这样你可以使用你的代码尽可能多的了解你的方法。

1

的响应是在Typescript FAQ

这不是说有,但它似乎是为了使文件更具可读性,因为参数名称可能暗示有关参数值作出的决定。