[英]Visual Studio 2015 RC Typescript experimental decorators error
如何在VS2015中禁用以下錯誤?
TS1219對裝飾器的實驗支持是一個在將來的版本中可能會發生變化的功能。 指定“--experimentalDecorators”以刪除此警告。
我正在嘗試使用Angular2注釋。 我嘗試將以下手動添加到項目文件中,但沒有運氣:
<TypeScriptExperimentalDecorators>True</TypeScriptExperimentalDecorators>
我還安裝了TypeScript 1.5.0 beta擴展。
Visual Studio 2015支持從Typescript版本1.8開始的tsconfig文件。 在項目的根目錄下創建tsconfig.json文件,並添加experimentalDecorators
編譯器選項。
例:
{
"compileOnSave": true,
"compilerOptions": {
"module": "commonjs",
"sourceMap": true,
"experimentalDecorators": true
}
}
對於舊版本:
https://github.com/Microsoft/TypeScript/issues/3934
如果您有項目文件,則不會接受tsconfig。 項目文件優先。 我們仍然在刷新VS項目和tsconfig之間的集成故事,因為您可以在兩者中指定編譯器選項。
所以要禁用錯誤信息,右鍵單擊項目文件,卸載項目,然后右鍵單擊編輯項目文件,在文件末尾應該有一個配置部分,添加:
<PropertyGroup Condition="'$(Configuration)' == 'Debug'"> .... <TypeScriptExperimentalDecorators>true</TypeScriptExperimentalDecorators> </PropertyGroup>
保存並重新加載。
您可能還需要TypeScriptEmitDecoratorMetadata來映射--emitDecroatorMetadata
將IDE升級到最新版本。 然后在項目的根目錄下創建tsconfig.json文件(如果您還沒有)。 然后添加experimentalDecorators
作為編譯器選項。
例:
{
"version": "1.5.0",
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"declaration": false,
"noImplicitAny": false,
"removeComments": true,
"noLib": false,
"emitDecoratorMetadata": true,
"sourceMap": true,
"listFiles": true,
"outDir": "dist",
"experimentalDecorators": true
}
}
在Visual Studio 2015中,您必須在TypeScript項目文件中啟用TypeScriptExperimentalDecorators
。
卸載項目文件,然后添加以下行:
<TypeScriptExperimentalDecorators>True</TypeScriptExperimentalDecorators>
我復制了完整的PropertyGroup,以便您可以找到添加它的位置:
<PropertyGroup Condition="'$(Configuration)' == 'Debug'">
<TypeScriptRemoveComments>false</TypeScriptRemoveComments>
<TypeScriptSourceMap>true</TypeScriptSourceMap>
<TypeScriptTarget>ES5</TypeScriptTarget>
<TypeScriptJSXEmit>None</TypeScriptJSXEmit>
<TypeScriptCompileOnSaveEnabled>True</TypeScriptCompileOnSaveEnabled>
<TypeScriptNoImplicitAny>False</TypeScriptNoImplicitAny>
<TypeScriptModuleKind>System</TypeScriptModuleKind>
<TypeScriptOutFile />
<TypeScriptOutDir />
<TypeScriptGeneratesDeclarations>False</TypeScriptGeneratesDeclarations>
<TypeScriptNoEmitOnError>True</TypeScriptNoEmitOnError>
<TypeScriptMapRoot />
<TypeScriptSourceRoot />
<TypeScriptExperimentalDecorators>True</TypeScriptExperimentalDecorators>
</PropertyGroup>
發現我還必須為元數據添加標簽
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
<!--other -->
<TypeScriptExperimentalDecorators>True</TypeScriptExperimentalDecorators>
<TypeScriptEmitDecoratorMetadata>True</TypeScriptEmitDecoratorMetadata>
</PropertyGroup>
http://www.cmichaelgraham.io/aurelia-typescript-samples/vs2015-samples/vs2015-samples.html
<TypeScriptToolsVersion>1.7</TypeScriptToolsVersion>
...........
<TypeScriptAdditionalFlags> $(TypeScriptAdditionalFlags) --emitDecoratorMetadata --experimentalDecorators </TypeScriptAdditionalFlags>
我也遇到了這個問題。
遇到的時間:
我的環境是:
我的解決方案是:
<TypeScriptExperimentalDecorators>True</TypeScriptExperimentalDecorators>
如果在csproj文件中找不到正確的屬性組,或者希望VS環境自動添加正確的屬性組,則只需在項目屬性> Build下切換“在構建時生成輸出”,然后執行項目卸載。
要注意這里我不會在這一點上有一個tsconfig.json文件。 添加tsconfig.json文件會導致問題再次出現。
為了進一步解決加入tsconfig.json文件我也跟着上設置了.NET核心打字稿指令后問題就設在這里下的“安裝依賴關系分型”和“更新tsconfig.json”。
總結(但請自己閱讀):
"experimentalDecorators": true
對於tsconfig.json中的compilerOptions為true 對於上下文。 除了這個錯誤,我還遇到了以下情況:
上面的步驟為我解決了上面的具體錯誤。 我希望這有幫助。
通過簡單地使用Nuget Package Manager,我能夠將我的TypeScript升級到最新版本,這解決了這個問題。
這與我所看到的Typescript版本沖突有關。
驗證您的Typescript版本並進行適當的升級或降級以解決問題。
我有類似的問題。 我有很多可以分享我的發現。 我也在研究Angular 2(ng-book-2)。
我在用什么?
IDE:WebStorm
打字稿:1.6.2
時間:2015年10月10日
我在做什么?
我嘗試將app.ts編譯為app.js; 但是,我遇到這個錯誤:
錯誤TS5052:如果未指定選項'experimentalDecorators',則無法指定選項'emitDecoratorMetadata'。
這是我的tsconfig.json BEFORE
{
"version": "1.5.0",
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"declaration": false,
"noImplicitAny": false,
"removeComments": true,
"noLib": false,
"emitDecoratorMetadata": true
},
"filesGlob": [
"./**/*.ts",
"!./node_modules/**/*.ts"
],
"files": [
"./app.ts",
"./typings/angular2/angular2.d.ts",
"./typings/es6-promise/es6-promise.d.ts",
"./typings/rx/rx-lite.d.ts",
"./typings/rx/rx.d.ts",
"./typings/tsd.d.ts"
]
}
這是我的tsconfig.json 之后
{
"version": "1.6.2",
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"declaration": false,
"noImplicitAny": false,
"removeComments": true,
"noLib": false,
"emitDecoratorMetadata": true,
"experimentalDecorators": true
},
"filesGlob": [
"./**/*.ts",
"!./node_modules/**/*.ts"
],
"files": [
"./app.ts",
"./typings/angular2/angular2.d.ts"
]
}
從之前到之后更改tsconfig.json有效地解決了我的兩個問題。 一個是上面的,另一個是下面的問題。 后面的問題在這里討論angular2與ES6不應該引用es6-promise
typings / es6-promise / es6-promise.d.ts(11,15):錯誤TS2300:重復標識符'Promise'。 typings / es6-promise / es6-promise.d.ts(42,16):錯誤TS2300:重復標識符'Promise'。 typings / es6-shim / es6-shim.d.ts(475,11):錯誤TS2300:重復標識符'Promise'。 typings / es6-shim / es6-shim.d.ts(552,13):錯誤TS2300:重復標識符'Promise'。
我在我的csproj文件改變TypeScriptToolsVersion以匹配packages.json(目前2.0.2)中定義的打字稿的版本解決了這個。
<TypeScriptToolsVersion>2.0.2</TypeScriptToolsVersion>
這個錯誤出現了,因為我試圖錯誤地創建了一個擴展名為“.js”而不是“.ts”的新文件。 將文件擴展名更改為“.ts”后,它消失了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.