VSCode:是否可以抑制实验装饰器警告

时间:2015-07-31 03:38:58

标签: visual-studio-code typescript1.5

在VSCode中,我收到错误:

“对装饰器的实验支持是一个在将来的版本中可能会发生变化的功能。指定'--experimentalDecorators'来删除此警告。”

我可以将--experimentalDecorators标志添加到我的tasks.json文件中以在构建时删除此错误,但是当我加载VSCode时,我似乎无法从我的intellisense或错误列表中删除它。有没有办法做到这一点?

14 个答案:

答案 0 :(得分:42)

我遇到了同样的错误。我将以下tsconfig.json文件添加到我的项目根目录,重新启动VSCode并最终消失:

{
    "compilerOptions": {
        "emitDecoratorMetadata": true,
        "experimentalDecorators": true,
        "module": "amd",
        "target": "ES6" 
    }
}

更新:

我注意到,在tsconfig.json中添加“files”数组之前,有时VS Code不会禁止此警告,即使空的数组也可以。对我而言,现在每次都有效,如果消息没有消失,请尝试以下方法:

{
    "compilerOptions": {
        ... 
    },
    "files": [],
    "exclude": [
        "node_modules"
    ]
}

也许这可以解释为什么每个人都有不同的结果?

答案 1 :(得分:29)

默认情况下,VSC会查看自己的TS库和定义。如果您使用的是其他版本(非常可能),则应指向VSC以查找该版本的定义。

在我的settings.json文件中,我进行了以下设置:

// Place your settings in this file to overwrite default and user settings.
{
    "typescript.tsdk": "node_modules\\typescript\\lib"

}

我相信您可以为“用户设置”或“工作区设置”设置此项。因此,您可以在“用户设置”中进行一次性配置,或仅为一个项目/工作区进行一次性配置如果您在指定的文件夹中本地安装了您的打字稿 - 我认为这是默认的节点模块文件夹。

要修改设置,请转到File/Preferences/User SettingFile/Preference/Workspace Settings

更新:Visual Studio Code刚刚发布了一个新版本,更好地支持了不同版本的打字稿。请在此处查看:https://code.visualstudio.com/updates#_languages

答案 2 :(得分:13)

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

"javascript.implicitProjectConfig.experimentalDecorators": true

VSCode - >偏好 - >设置

enter image description here

答案 3 :(得分:12)

您可以通过删除在%code%\resources\app\plugins\vs.language.typescript\lib\tsserver.lib中创建错误的行来做到这一点。

查找以下代码并将其删除

            if (!compilerOptions.experimentalDecorators) {
              error(node, ts.Diagnostics.Experimental_support_for_decorators_is_a_feature_that_is_subject_to_change_in_a_future_release_Specify_experimentalDecorators_to_remove_this_warning);
            }

答案 4 :(得分:6)

在两个不同的Angular 2最终发布项目中苦苦挣扎,这是我的解决方案。

src 折叠中的

tsconfig.json

{
    "compilerOptions": {

        "experimentalDecorators": true

    }
} 

将此设置添加到文件 - >偏好设置 - >用户设置

"typescript.tsdk": "node_modules\\typescript\\lib"

答案 5 :(得分:5)

正如其他答案所指出的,您的Visual Studio代码需要找到tsconfig.json文件。

我遇到了同样的问题。而这主要是因为我没有意识到项目结构。

(提示:请阅读下图中从上到下的文字。)

Solution

  1. 我将tsconfig.jsontsconfig.app.json混淆了。
  2. 我在Visual Studio中打开了错误的文件夹。因此,tsconfig.json不在范围内。
  3. 只需打开正确的根文件夹(即项目文件夹,比src高一级)就解决了我的问题。

答案 6 :(得分:3)

您可以使用"typescript.tsdk"中的setting.json来更改包含VSCode使用的tsserver.js和lib.ts文件的特定文件夹路径。

请参阅此示例:Can I use a relative path to configure typescript sdk?

注意:您在文件>中找到setting.json偏好>用户设置。

答案 7 :(得分:3)

这帮助我使用了React JS文件(VSCode版本1.9.1)。

1)加入tsconfig.json

{
    "compilerOptions": {
        "experimentalDecorators": true,
        "allowJs": true
    }
}

2)重启VS代码。

注意:如Tim所述,即使您没有使用TypeScript,也需要添加tsconfig.json

来源:https://ihatetomatoes.net/how-to-remove-experimentaldecorators-warning-in-vscode/

答案 8 :(得分:2)

如果你使用Grunt(grunt-ts),你还必须添加" experimentalDecorators:true "作为 gruntfile.js 文件中的选项。

你的文件最后应该是这样的:

module.exports = function(grunt) {
  grunt.initConfig({
    ts: {
      default : {
        src: ["**/*.ts", "!node_modules/**"]
      },
      options: {
        experimentalDecorators: true
      }
    }
  });
  grunt.loadNpmTasks("grunt-ts");
  grunt.registerTask("default", ["ts"]);
};

有关更多信息,请阅读github上的文档https://github.com/TypeStrong/grunt-ts#experimentaldecorators

答案 9 :(得分:2)

Visual Studio代码1.3.1 中,我的修复程序位于 C:\ Program Files(x86)\ Microsoft VS Code \ resources \ app \ extensions \ typescript \ server \ typescript \ lib \ tsserver.js 并注释掉或删除该行。

if (!compilerOptions.experimentalDecorators) {
     error(node, ts.Diagnostics.Experimental_support_for_decorators_is_a_feature_that_is_subject_to_change_in_a_future_release_Specify_experimentalDecorators_to_remove_this_warning);
}

答案 10 :(得分:1)

我遇到了同样的错误我弄明白,因为这是我将组件文件扩展名称为.js它应该是.ts

答案 11 :(得分:1)

即使在项目中的正确级别打开VSCode,您的根目录中仍可能需要额外的tsconfig文件。我现在在我的项目根目录中有一个tsconfig(只包含php索引和文件夹),ts文件夹(旧版打字稿类)和我的src文件夹(vue组件)。

不要忘记关闭文件夹并重新启动VSCode。

答案 12 :(得分:1)

请检查您是否在VS Code中添加了整个项目的文件夹,而不仅仅是src文件夹,因为如果仅打开src,则ts.config.json文件将不在范围内,并且VS无法识别实验装饰器参数。

就我而言,这解决了所有问题

答案 13 :(得分:0)

我已经在 tsconfig.json 中启用了实验性装饰器,所以我有点困惑,直到我发现 this thread on GitHub 有人说要检查 VS Code 中的设置。

所以我转到文件 --> 首选项 --> 设置并搜索实验装饰器并检查这两个设置: experimental decorators enabled in settings

以下是我的 VSCode 版本的详细信息:

Version: 1.52.1 (user setup)
Commit: ea3859d4ba2f3e577a159bc91e3074c5d85c0523
Date: 2020-12-16T16:34:46.910Z
Electron: 9.3.5
Chrome: 83.0.4103.122
Node.js: 12.14.1
V8: 8.3.110.13-electron.0
OS: Windows_NT x64 10.0.18363