我正在从 Angular 8.2 升级到 9.1,并且我正在尝试将私有字段更改为
#fieldName: any
,如 TS 3.8 所允许,而不是 private fieldName: any
。我得到编译器错误说
私有标识符仅在针对 ECMAScript 2015 及更高版本时可用。
tsconfig.json:
{
"compilerOptions": {
"module": "esnext"
"target": "es2015",
}
}
package.json:
"devDependencies": {
"typescript": "3.8.3"
}
在
tsconfig.json
中,您必须将 es2015 替换为最新版本才能支持此功能。尝试替换每个es2015
的es2017
,我使用es2017是我认为最好的版本
除非你的 package.json 中有 "type":"module" ,否则在使用最新目标或超越 ES2015 时,请始终在 tsconfig 中添加 "module":"commonJS"
{
"compilerOptions": {
"sourceMap": true,
"outDir": "dist",
"target": "ESNext",
"module": "CommonJS",
"strict": true,
"lib": ["esnext"],
"esModuleInterop": true
}
}
我没有使用过 Angular,但遇到了同样的错误。添加以下属性有帮助:
"experimentalDecorators": true,
"emitDecoratorMetadata": true,