VS2015で次のエラーを無効にするにはどうすればよいですか?
TS1219デコレータの実験的サポートは、将来のリリースで変更される可能性がある機能です。この警告を削除するには、「-experimentalDecorators」を指定してください。
Angular2アノテーションを使用しようとしています。プロジェクトファイルに以下を手動で追加しようとしましたが、うまくいきませんでした。
<TypeScriptExperimentalDecorators>True</TypeScriptExperimentalDecorators>
また、TypeScript 1.5.0ベータ拡張機能もインストールしました。
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も必要になる場合があります
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>
Nuget Package Managerを使用するだけで、TypeScriptを最新バージョンにアップグレードすることができ、問題が修正されました。
これは、私が見ることができるTypeScriptバージョンの競合に関連しています。
TypeScriptバージョンを確認し、適切なアップグレードまたはダウングレードを行って問題を修正してください。
私もこの問題に遭遇しました。
遭遇した:
私の環境は:
私の解決策は:
<TypeScriptExperimentalDecorators>True</TypeScriptExperimentalDecorators>
Csprojファイルで正しいプロパティグループが見つからない場合、またはVS環境で正しいプロパティグループを自動的に追加する場合は、[プロジェクトプロパティ]> [ビルド]で[ビルド時に出力を生成]を切り替えて、プロジェクトをアンロードします。
ここで注意するのは、現時点ではtsconfig.jsonファイルがありません。 tsconfig.jsonファイルを追加すると、問題が再発します。
Tsconfig.jsonファイルを追加した後、この問題をさらに解決するために、TypeScriptを.NET Core ここにあります 「依存関係のタイピングをインストール」および「tsconfig.jsonを更新」でセットアップする手順に従いました。
要約するには(ただし、自分で読んでください):
"experimentalDecorators": true
を追加しますコンテキスト用。このエラーに加えて、次の問題も発生していました。
上記の手順により、上記の特定のエラーが解決されました。これがお役に立てば幸いです。
http://www.cmichaelgraham.io/aurelia-TypeScript-samples/vs2015-samples/vs2015-samples.html
<TypeScriptToolsVersion>1.7</TypeScriptToolsVersion>
...........
<TypeScriptAdditionalFlags> $(TypeScriptAdditionalFlags) --emitDecoratorMetadata --experimentalDecorators </TypeScriptAdditionalFlags>
同様の問題がありました。私の発見と共有すべきことはかなりあります。私は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'。
「.ts」ではなく拡張子「.js」で誤って新しいファイルを作成しようとしたため、このエラーが発生しました。ファイルの拡張子を「.ts」に変更すると消えました。
これを解決するには、csprojファイルのTypeScriptToolsVersionをpackages.json(現在2.0.2)で定義されているTypeScriptのバージョンと一致するように変更しました。
<TypeScriptToolsVersion>2.0.2</TypeScriptToolsVersion>