如何在 VS2015 中禁用以下错误?
TS1219 对装饰器的实验性支持是一项可能在未来版本中更改的功能。指定“--experimentalDecorators”以删除此警告。
我正在尝试使用 Angular2 注释。我尝试将以下内容手动添加到项目文件中,但没有成功:
<TypeScriptExperimentalDecorators>True</TypeScriptExperimentalDecorators>
我还安装了 TypeScript 1.5.0 beta 扩展。
如何在 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 中,您必须TypeScriptExperimentalDecorators
在 TypeScript 项目文件中启用。
卸载项目文件,然后添加以下行:
<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>
我也遇到了这个问题。
遇到的时候:
我的环境是:
我的解决方案是:
<TypeScriptExperimentalDecorators>True</TypeScriptExperimentalDecorators>
如果您在 csproj 文件中找不到正确的属性组,或者您希望 VS 环境自动添加正确的属性组,则只需在项目属性 > 构建下切换“生成时生成输出”,然后执行项目卸载。
需要注意的是,我此时没有 tsconfig.json 文件。添加 tsconfig.json 文件会导致问题再次出现。
为了在添加 tsconfig.json 文件后进一步解决该问题,我按照“为依赖项安装类型”和“更新 tsconfig.json”下的 .NET Core 设置typescript的说明进行操作。
总结一下(但请自己阅读):
"experimentalDecorators": true
到 tsconfig.json 中的 compilerOptions对于上下文。除了这个错误,我还遇到了以下问题:
上述步骤为我解决了上述特定错误。我希望这有帮助。
http://www.cmichaelgraham.io/aurelia-typescript-samples/vs2015-samples/vs2015-samples.html
<TypeScriptToolsVersion>1.7</TypeScriptToolsVersion>
...........
<TypeScriptAdditionalFlags> $(TypeScriptAdditionalFlags) --emitDecoratorMetadata --experimentalDecorators </TypeScriptAdditionalFlags>
通过简单地使用 Nuget 包管理器,我能够将我的 TypeScript 升级到最新版本,这解决了这个问题。
据我所知,这与 Typescript 版本冲突有关。
验证您的 Typescript 版本并进行适当的升级或降级应该可以解决问题。
我有类似的问题。我有很多东西要分享我的发现。我也在研究 Angular 2 (ng-book-2)。
我在用什么?
IDE:网络风暴
打字稿:1.6.2
时间:2015 年 10 月 10 日
我在做什么?
我尝试将我的 app.ts 编译为 app.js;但是,我遇到了这个错误:
错误 TS5052:如果不指定选项“experimentalDecorator”,则无法指定选项“emitDecoratorMetadata”。
这是我之前的 tsconfig.json
{
"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 with ES6 should not reference es6-promise
Typings/es6-promise/es6-promise.d.ts(11,15):错误 TS2300:重复标识符“承诺”。Typings/es6-promise/es6-promise.d.ts(42,16):错误 TS2300:重复标识符“承诺”。typings/es6-shim/es6-shim.d.ts(475,11):错误 TS2300:重复的标识符“承诺”。typings/es6-shim/es6-shim.d.ts(552,13):错误 TS2300:重复的标识符“承诺”。
出现此错误是因为我尝试错误地创建了一个扩展名为“.js”而不是“.ts”的新文件。将文件扩展名更改为“.ts”后它就消失了。
我通过更改我的 csproj 文件中的TypeScriptToolsVersion以匹配packages.json中定义的 TypeScript 版本(当前为 2.0.2)解决了这个问题。
<TypeScriptToolsVersion>2.0.2</TypeScriptToolsVersion>