typescript 2.0:具有默认值

时间:2016-10-26 20:42:54

标签: typescript typescript2.0

地狱人,

这是另一个打字稿2.0问题(启用了严格的空检查模式)。因此,如果您定义一个具有所有参数的默认值的函数:

(name = "Luis", age = 40)=>void

然后所有参数都被认为是可选的,即,就好像我们有以下签名:

(name?: string, age?: number) => void

右?现在,当我们有这个签名时会发生什么:

(name = "Luis", age: number ) => void

根据VS代码,该签名与以下内容兼容:

(name: string, age: string) => void

现在,如果我激活严格空检查模式,则以下调用不应产生错误:

doIt(undefined, 30);

它编译好了,但如果我没错,undefined只会自动添加到可选参数类型列表中。我没有找到任何对默认初始化参数的引用。

所以,如果之前的电话没问题,有人可以指点我在官方文档中找到相关信息吗?

谢谢,

路易斯

1 个答案:

答案 0 :(得分:1)

快速注意:您无法仅在签名中指定默认值,例如以下是错误:

declare var foo: (name = "Luis", age = 40) => void; // ERROR: defaults only allowed in implementation

继续以下代码:

var foo = (name = "Luis", age: number) => null;
foo(undefined, 123);
foo(null, 123); // ERROR 

显示namestringundefined兼容。工具提示错误,但一般分析是正确的。

随时在https://github.com/Microsoft/TypeScript/issues

提出问题