web-dev-qa-db-ja.com

Visual Studio 2015 RC TypeScript実験デコレータエラー

VS2015で次のエラーを無効にするにはどうすればよいですか?

TS1219デコレータの実験的サポートは、将来のリリースで変更される可能性がある機能です。この警告を削除するには、「-experimentalDecorators」を指定してください。

enter image description here

Angular2アノテーションを使用しようとしています。プロジェクトファイルに以下を手動で追加しようとしましたが、うまくいきませんでした。

<TypeScriptExperimentalDecorators>True</TypeScriptExperimentalDecorators>

また、TypeScript 1.5.0ベータ拡張機能もインストールしました。

30
Graeme

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>

保存してリロードします。

--emitDecroatorMetadataをマップするには、TypeScriptEmitDecoratorMetadataも必要になる場合があります

36
v_b

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
  }
}
28
un33k

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>
11
liima

メタデータのタグも追加する必要があることがわかりました

<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
    <!--other -->
    <TypeScriptExperimentalDecorators>True</TypeScriptExperimentalDecorators>
    <TypeScriptEmitDecoratorMetadata>True</TypeScriptEmitDecoratorMetadata>
</PropertyGroup>
4
JimmyW

Nuget Package Managerを使用するだけで、TypeScriptを最新バージョンにアップグレードすることができ、問題が修正されました。

これは、私が見ることができるTypeScriptバージョンの競合に関連しています。

TypeScriptバージョンを確認し、適切なアップグレードまたはダウングレードを行って問題を修正してください。

1
Kenneth O'kwu

私もこの問題に遭遇しました。

遭遇した:

  • Angular2で開始-2.0.0-beta.17

私の環境は:

  • Visual Studio 2015アップデート3
  • Microsoft Visual Studio Extension 1.8.34.0用のTypeScript
  • ノードバージョンv6.2.2(cmdline "> node --version"で見つけることができます)
  • ASP.NET Coreプロジェクト

私の解決策は:

  • プロジェクトをアンロード
  • プロジェクト構成ファイルに次の行を追加します
<TypeScriptExperimentalDecorators>True</TypeScriptExperimentalDecorators>

Csprojファイルで正しいプロパティグループが見つからない場合、またはVS環境で正しいプロパティグループを自動的に追加する場合は、[プロジェクトプロパティ]> [ビルド]で[ビルド時に出力を生成]を切り替えて、プロジェクトをアンロードします。

  • ファイルを保存し、プロジェクトをリロードします。
  • Visual Studioを閉じてから、ソリューションとプロジェクトを起動して再度開きます。

ここで注意するのは、現時点ではtsconfig.jsonファイルがありません。 tsconfig.jsonファイルを追加すると、問題が再発します。

Tsconfig.jsonファイルを追加した後、この問題をさらに解決するために、TypeScriptを.NET Core ここにあります 「依存関係のタイピングをインストール」および「tsconfig.jsonを更新」でセットアップする手順に従いました。

要約するには(ただし、自分で読んでください):

  • Cmdを開き、プロジェクトのsrcフォルダーに移動します
  • 「npm install -gtypings」を実行します(これは好きではありません。他のオプションも歓迎します)
  • Tsconfig.jsonのcompilerOptionsに"experimentalDecorators": trueを追加します
  • ソリューションをもう一度確認してください。上記の問題は解消されました。

コンテキスト用。このエラーに加えて、次の問題も発生していました。

上記の手順により、上記の特定のエラーが解決されました。これがお役に立てば幸いです。

1
David Hall

http://www.cmichaelgraham.io/aurelia-TypeScript-samples/vs2015-samples/vs2015-samples.html

<TypeScriptToolsVersion>1.7</TypeScriptToolsVersion>
...........
<TypeScriptAdditionalFlags> $(TypeScriptAdditionalFlags) --emitDecoratorMetadata --experimentalDecorators </TypeScriptAdditionalFlags>
1
Ilya

同様の問題がありました。私の発見と共有すべきことはかなりあります。私はAngular 2にも取り組んでいます(ng-book-2)。

私は何を使用していますか?

IDE:WebStorm

TypeScript: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[〜#〜] after [〜#〜]

{
    "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をbeforeからafterに変更すると、私の2つの問題を効果的に解決できます。 1つは上記であり、もう1つは以下の問題です。後者の問題についてはここで説明します ES6のangular2は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:重複した識別子「約束」。 typings/es6-shim/es6-shim.d.ts(552,13):エラーTS2300:重複した識別子 'Promise'。

0

警告を削除するには、vscodeのsettings.jsonファイルに次を追加する必要があります。

"javascript.implicitProjectConfig.experimentalDecorators": true

VSCode->設定->設定

enter image description here

0
Zub

「.ts」ではなく拡張子「.js」で誤って新しいファイルを作成しようとしたため、このエラーが発生しました。ファイルの拡張子を「.ts」に変更すると消えました。

0
Xchai

これを解決するには、csprojファイルのTypeScriptToolsVersionpackages.json(現在2.0.2)で定義されているTypeScriptのバージョンと一致するように変更しました。

<TypeScriptToolsVersion>2.0.2</TypeScriptToolsVersion>
0
JMK