我突然让我的tsc开始在我的js中输出以下内容,这在我的React应用程序中引发了错误。
> 12 | this.id = !;
这是通过在我的一个课程中分配以下任意一项来实现的:
public id?: number;
public id!: number;
实际的js输出发生在类构造函数中(即,将值设置为感叹号,这显然会导致错误)。
{
"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": [ ... ]
}
这没有效果。
这消除了错误/令人讨厌的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;
}
});
}