asp.net - (TS) 在 'const' 枚举声明中,成员初始化器必须是常量表达式
我在 Visual Studio 2017 构建应用程序时遇到问题。我使用的是 ASP.NET CORE 2 和 Angular 6。运行应用程序后,我在 node_modules 的文件 output_ast.d.ts 上遇到错误:
(TS) 在 'const' 枚举声明中,成员初始化器必须是常量表达式。
和
构建:在 'const' 枚举声明中,成员初始化器必须是常量表达式。
带错误的代码:
export declare const enum JSDocTagName {
Desc = "desc",
Id = "id",
Meaning = "meaning",
}
我的 package.json
"name": "client-app",
"version": "0.0.0",
"scripts": {
"ng": "ng",
"start": "ng serve",
"build": "ng build",
"test": "ng test",
"lint": "ng lint",
"e2e": "ng e2e"
},
"private": true,
"dependencies": {
"@angular/animations": "^6.0.0",
"@angular/common": "^6.0.0",
"@angular/compiler": "^6.0.0",
"@angular/core": "^6.0.0",
"@angular/forms": "^6.0.0",
"@angular/http": "^6.0.0",
"@angular/platform-browser": "^6.0.0",
"@angular/platform-browser-dynamic": "^6.0.0",
"@angular/router": "^6.0.0",
"core-js": "^2.5.4",
"rxjs": "^6.0.0",
"zone.js": "^0.8.26"
},
"devDependencies": {
"@angular/compiler-cli": "^6.0.0",
"@angular-devkit/build-angular": "~0.6.1",
"typescript": "~2.7.2",
"@angular/cli": "~6.0.1",
"@angular/language-service": "^6.0.0",
"@types/jasmine": "~2.8.6",
"@types/jasminewd2": "~2.0.3",
"@types/node": "~8.9.4",
"codelyzer": "~4.2.1",
"jasmine-core": "~2.99.1",
"jasmine-spec-reporter": "~4.2.1",
"karma": "~1.7.1",
"karma-chrome-launcher": "~2.2.0",
"karma-coverage-istanbul-reporter": "~1.4.2",
"karma-jasmine": "~1.1.1",
"karma-jasmine-html-reporter": "^0.2.2",
"protractor": "~5.3.0",
"ts-node": "~5.0.1",
"tslint": "~5.9.1"
}
}
应用的创建类似于这篇文章 https://www.codeproject.com/Articles/1245243/How-to-Create-an-App-with-Angular-and-ASP-NET-C ,但是 angular 应用在一个名为 ClientApp 的单独文件夹中。我尝试了不同版本的 ts 和 angular cli,但都没有用。对于这个错误,我该怎么办?
答案#1
在 Visual Studio 中,检查项目属性->TypeScript 构建部分的设置,并确保 TypeScript 版本设置为“使用最新可用版本”或至少是比较新的版本。我怀疑它当前设置的是在 TypeScript 支持字符串枚举之前的版本。
答案#2
我经历了完全相同的情况,似乎是 TypeScript 版本不兼容的问题。与上述建议将 TypeScript 版本更改为“使用最新可用版本”不同,我通过将 TypeScript 版本更改为 2.2 解决了问题。