打字稿输出“ =!;”用于未定义/可空的属性

时间:2019-02-02 23:30:34

标签: javascript reactjs typescript

问题

我突然让我的tsc开始在我的js中输出以下内容,这在我的React应用程序中引发了错误。

> 12 |         this.id = !;

这是通过在我的一个课程中分配以下任意一项来实现的:

public id?: number;
public id!: number;

实际的js输出发生在类构造函数中(即,将值设置为感叹号,这显然会导致错误)。

我的tsconfig.json

{
  "compilerOptions": {
  "target": "es5",
  "module": "esnext",
  "sourceMap": false,
  "lib": [
    "dom",
    "es2016",
    "es2017"
  ],
  "importHelpers": true,
  "moduleResolution": "node",
  "allowSyntheticDefaultImports": true,
  "downlevelIteration": true,
  "typeRoots": [
    "./node_modules/@types"
  ],
  "jsx": "preserve",
  "allowJs": true,
  "skipLibCheck": true,
  "esModuleInterop": true,
  "strict": true,
  "forceConsistentCasingInFileNames": true,
  "resolveJsonModule": true,
  "isolatedModules": true,
  "noEmit": true
},
"include": [ ... ],
"exclude": [ ... ]

}

尝试修复

1)删除并重新翻译js

这没有效果。

2)删除可为空/未定义的属性

这消除了错误/令人讨厌的js,但是显然我现在无法这样声明这些属性。


好像我的tsconfig突然陷入混乱,决定输出废话了。

我在这里错过了耀眼的东西吗?


调用方法,该方法设置构造函数的属性:

private build(payload: BuilderPayload) {
    const allowed = this.getAttributes();
    [ ...Object.entries(payload) ].forEach(([ key, value ]:[ string, any ]) => {
        if (allowed.includes(key) && typeof value !== null) {
            this[key] = value;
        }
    });
}

0 个答案:

没有答案