簡體   English   中英

Visual Studio 2015 RC Typescript實驗裝飾器錯誤

[英]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>

我也遇到了這個問題。

遇到的時間:

  • 從Angular2開始 - 2.0.0-beta.17

我的環境是:

  • Visual Studio 2015 Update 3
  • Microsoft Visual Studio Extension 1.8.34.0的Typescript
  • 節點版本v6.2.2(cmdline“> node --version”找到你的)
  • ASP.NET核心項目

我的解決方案是:

  • 卸載項目
  • 將以下行添加到項目配置文件中
<TypeScriptExperimentalDecorators>True</TypeScriptExperimentalDecorators>

如果在csproj文件中找不到正確的屬性組,或者希望VS環境自動添加正確的屬性組,則只需在項目屬性> Build下切換“在構建時生成輸出”,然后執行項目卸載。

  • 保存文件並重新加載項目。
  • 關閉Visual Studio,然后啟動並重新打開解決方案和項目。

要注意這里我不會在這一點上有一個tsconfig.json文件。 添加tsconfig.json文件會導致問題再次出現。

為了進一步解決加入tsconfig.json文件我也跟着上設置了.NET核心打字稿指令后問題就設在這里下的“安裝依賴關系分型”和“更新tsconfig.json”。

總結(但請自己閱讀):

  • 打開cmd並導航到項目的src文件夾
  • 運行“npm install -g typings”(我不喜歡這個。歡迎其他選項)
  • 添加"experimentalDecorators": true對於ts​​config.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”后,它消失了。

我要在vscode的settings.json文件中添加以下內容以刪除警告。

"javascript.implicitProjectConfig.experimentalDecorators": true

VSCode - >首選項 - >設置

在此輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM