34

如何在 VS2015 中禁用以下错误?

TS1219 对装饰器的实验性支持是一项可能在未来版本中更改的功能。指定“--experimentalDecorators”以删除此警告。

在此处输入图像描述

我正在尝试使用 Angular2 注释。我尝试将以下内容手动添加到项目文件中,但没有成功:

<TypeScriptExperimentalDecorators>True</TypeScriptExperimentalDecorators>

我还安装了 TypeScript 1.5.0 beta 扩展。

4

11 回答 11

41

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

于 2015-07-31T14:23:23.960 回答
27

将您的 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
  }
}
于 2015-07-07T02:39:21.227 回答
15

在 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>
于 2015-11-06T09:46:30.223 回答
4

发现我还必须为元数据添加标签

<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
    <!--other -->
    <TypeScriptExperimentalDecorators>True</TypeScriptExperimentalDecorators>
    <TypeScriptEmitDecoratorMetadata>True</TypeScriptEmitDecoratorMetadata>
</PropertyGroup>
于 2016-04-03T16:59:03.847 回答
1

我也遇到了这个问题。

遇到的时候:

  • 从 Angular2 开始 - 2.0.0-beta.17

我的环境是:

  • 视觉工作室 2015 更新 3
  • Microsoft Visual Studio 扩展 1.8.34.0 的打字稿
  • 节点版本 v6.2.2(cmdline ">node --version" 找到你的)
  • ASP.NET 核心项目

我的解决方案是:

  • 卸载项目
  • 将以下行添加到项目配置文件中
<TypeScriptExperimentalDecorators>True</TypeScriptExperimentalDecorators>

如果您在 csproj 文件中找不到正确的属性组,或者您希望 VS 环境自动添加正确的属性组,则只需在项目属性 > 构建下切换“生成时生成输出”,然后执行项目卸载。

  • 保存文件并重新加载项目。
  • 关闭 Visual Studio,然后启动并重新打开解决方案和项目。

需要注意的是,我此时没有 tsconfig.json 文件。添加 tsconfig.json 文件会导致问题再次出现。

为了在添加 tsconfig.json 文件后进一步解决该问题,我按照“为依赖项安装类型”和“更新 tsconfig.json”下的 .NET Core 设置typescript的说明进行操作。

总结一下(但请自己阅读):

  • 打开 cmd 并导航到项目的 src 文件夹
  • 运行“npm install -g typings”(我不喜欢这个。欢迎使用其他选项)
  • 添加"experimentalDecorators": true到 tsconfig.json 中的 compilerOptions
  • 再次检查您的解决方案。上面描述的问题现在应该消失了。

对于上下文。除了这个错误,我还遇到了以下问题:

上述步骤为我解决了上述特定错误。我希望这有帮助。

于 2016-07-02T11:27:40.023 回答
1

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

<TypeScriptToolsVersion>1.7</TypeScriptToolsVersion>
...........
<TypeScriptAdditionalFlags> $(TypeScriptAdditionalFlags) --emitDecoratorMetadata --experimentalDecorators </TypeScriptAdditionalFlags>
于 2015-12-05T18:28:26.793 回答
1

通过简单地使用 Nuget 包管理器,我能够将我的 TypeScript 升级到最新版本,这解决了这个问题。

据我所知,这与 Typescript 版本冲突有关。

验证您的 Typescript 版本并进行适当的升级或降级应该可以解决问题。

于 2018-05-30T16:55:42.833 回答
0

我有类似的问题。我有很多东西要分享我的发现。我也在研究 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:重复的标识符“承诺”。

于 2015-10-10T04:19:27.270 回答
0

我必须在 vscode 的 settings.json 文件中添加以下内容以删除警告。

"javascript.implicitProjectConfig.experimentalDecorators": true

VSCode -> 首选项 -> 设置

在此处输入图像描述

于 2018-03-12T11:52:26.087 回答
0

出现此错误是因为我尝试错误地创建了一个扩展名为“.js”而不是“.ts”的新文件。将文件扩展名更改为“.ts”后它就消失了。

于 2017-02-20T16:38:12.127 回答
0

我通过更改我的 csproj 文件中的TypeScriptToolsVersion以匹配packages.json中定义的 TypeScript 版本(当前为 2.0.2)解决了这个问题。

<TypeScriptToolsVersion>2.0.2</TypeScriptToolsVersion>
于 2016-09-17T08:50:24.850 回答