私有标识符仅在针对 ECMAScript 2015 及更高版本 (Angular 9) 时可用

问题描述 投票:0回答:3

我正在从 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"
}
angular typescript angular9
3个回答
8
投票

tsconfig.json
中,您必须将 es2015 替换为最新版本才能支持此功能。尝试替换每个
es2015
es2017
,我使用es2017是我认为最好的版本


2
投票

除非你的 package.json 中有 "type":"module" ,否则在使用最新目标或超越 ES2015 时,请始终在 tsconfig 中添加 "module":"commonJS"

{
  "compilerOptions": {
    "sourceMap": true,
    "outDir": "dist",
    "target": "ESNext",
    "module": "CommonJS",
    "strict": true,
    "lib": ["esnext"],
    "esModuleInterop": true
  }
}

0
投票

我没有使用过 Angular,但遇到了同样的错误。添加以下属性有帮助:

"experimentalDecorators": true,
"emitDecoratorMetadata": true, 

   
© www.soinside.com 2019 - 2024. All rights reserved.