试图通过suppressExcessPropertyErrors 编译器选项抑制TS2339

Luc*_*oke 1 typescript ionic2 angular

这是代码:

var x = {};
x.test = 'abc';
Run Code Online (Sandbox Code Playgroud)

获取打字稿编译器错误:

TS2339:类型“{}”上不存在属性“test”。

我想禁止这种警告的对象的文字,我想这将suppressExcessPropertyErrors成为tsconfig.json应该解决这个问题。

配置:

{
    "compilerOptions": {
        "suppressExcessPropertyErrors": true
    },
    ...
}
Run Code Online (Sandbox Code Playgroud)

但没有任何改变..编译器仍然显示错误。

谢谢你的任何提示;)

bas*_*rat 8

我想将suppressExcessPropertyErrors 放入tsconfig.json 应该可以解决这个问题。

不。它会抑制对象构造中的多余属性,例如

var x = {};
x = {test:'abc'};
Run Code Online (Sandbox Code Playgroud)

我想抑制对象文字的这个警告

你可以使用any类型做任何你想做的事情,例如

var x:any = {};
x.test = 'abc';
Run Code Online (Sandbox Code Playgroud)

更多的

这称为惰性对象初始化,此处介绍了处理它的模式:https : //basarat.gitbooks.io/typescript/content/docs/tips/lazyObjectLiteralInitialization.html

  • 谢谢您的回答,我之前找到过“任何”解决方案,但我正在寻找更通用的解决方案,使用配置标志将是最好的。我认为 /read typescript 是“可选”超集,因此“您可以在它旁边使用标准 js”。但这个案例表明,事实似乎并非如此。 (2认同)
  • @Luckylooke 准确地说,不知何故,每个天才都认为打字稿项目总是从头开始。好吧,我正在将 2014 年的遗留节点服务器移植到打字稿,并且能够全局抑制大量类型错误会很好。 (2认同)