TypeScript版本: 3.5.3
搜索词:
ts-ignore 在类构造函数中
类方法参数使用无错误
代码
class Foo {
bar: string
constructor(bar: string) {
this.bar = bar
}
baz(buzz: number) {
return buzz + 1
}
}
// @ts-ignore
const instance = new Foo()
instance.baz('buzz')
预期行为:
对 instance.baz('buzz')
的调用应报告该参数应该是一个 number
而不是一个 string
。
实际行为:
那一行没有报错。
如果我在上面的那一行修复了 ts-ignore,那么它将正确地报告错误。
** playground链接:**
http://www.typescriptlang.org/play/?ts=3.8.0-dev.20200116#code/MYGwhgzhAEBiD29oG8BQ1oCMwCcBc0EALjgJYB2A5utMPOcTgK7BHw4AU2+hJFlAShQ0MRABakIAOm7QAvFlw0AvqhrYAXlyYaNBckwC2mAKY4haDBhwmiTHOSw6N0ANTQAjCtSrUAej9oAAEiCABaUkpydhNUOgYiaApiMHJgE3lochMAdzhEDgFUZKJU9JkwLQByTGcqgSA
相关问题:
通过Google或这里找不到任何相关问题。
3条答案
按热度按时间lb3vh1jj1#
这让人困惑,因为从仅仅悬停在
instance
上看,类型是Foo
;然而,我认为发生的事情是我们有不同的类型检查器模式,而new Foo()
产生的每种类型检查器都不同。new Foo()
在我们的产生错误的类型检查器中返回内部 错误 类型,它的作用类似于any
,因为它试图避免在后续操作中产生级联错误。然而,像快速信息和自动完成这样的操作完全依赖于一个更宽松的类型检查器,该类型检查器尝试以最大努力的方式获取操作的结果,并产生类型Foo
。然而,这个更宽松的检查器并不是产生错误的相同类型检查器示例,所以在后续操作中不会出现错误。@sheetalkamat@weswigham 这样听起来对吗?
70gysomp2#
这正是问题所在。请参阅 #28564 或 #28950 以获取可能的修复方法。
gkn4icbw3#
感谢您的回复。目前,我将专注于修复构造函数中的类型错误。