TypeScript 版本: 3.2.0-dev.20181027
搜索词:
代码
对于 javascript:
var SomeObject = {
SomeFunction: function (SomeInput) {
return SomeInput * 2;
},
SomeOtherFunction: function (SomeOtherInput, SomeOptionalInput = SomeObject.SomeFunction(2)) {
return SomeOtherInput * SomeOptionalInput;
}
};
SomeObject
悬停在 SomeObject
错误:
类型是 any
。如果删除默认参数,则类型正确
6条答案
按热度按时间ocebsuys1#
看起来是某些原因导致我们在早期就拉取签名类型,这与初始化器有关,取决于对象类型本身,并导致它被标记为循环引用,具体来说,当
noImplicitAny
为真时,我们得到错误。事情是,如果你用更符合命名空间的方式写同样的东西:
我们会做得更好,尽管在这种情况下这两个几乎等价。我认为从技术上讲,这是按预期工作的;但为了我们的JS用户,我们可以在这里做得更好。
yks3o0rb2#
这是一个例子:
如果这个类型检查通过就好了,因为当你运行它时,它按预期工作。要改进这需要很多工作吗?
1szpjjfi3#
@weswigham This looks fixed to me with TS 3.7.5. Can you please confirm
fgw7neuy4#
我仍然在操场上看到OP中描述的行为,甚至在3.8beta版本上。
3duebb1j5#
是的,我发誓这个代码之前是可以正常运行的,但现在当我再次测试时,它又回到了
any
。是否有任何jsconfig设置会影响这个问题?yzuktlbb6#