让我们分析下面的代码片段:
class Human {
private name: string;
constructor(name){
this.name = name;
}
}
let h = new Human(5)
上面的代码不会抛出任何错误。我希望它在构造函数调用中抛出,我在那里传递5
.
似乎构造函数的name
参数被推断为any
,其中,静态地很容易发现我将其分配给private name: string
.
问题是:TypeScript 允许5
在这里使用的任何特殊原因- 或者换句话说 -name
推断为any
,在这种情况下很明显它必须是一个字符串?
我知道我可以做另一个这样的类定义:
class Human {
constructor(
private name: string
){}
}
但是这里我指定了参数类型,所以这里没有推论。我可以用同样的方式:
class Human {
private name: string;
constructor(name: string){
this.name = name;
}
}
也不会有任何推论。我的问题是关于推理 - 为什么它会这样工作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句