TypeScript编译中的实验装饰器警告

ben*_*siu 183 decorator typescript visual-studio-code

我有

对装饰器的实验性支持是一个在将来的版本中可能会发生变化的功能.设置'experimentalDecorators'选项`以删除此警告.

甚至我在tsconfig.json中的compilerOptions都有设置:

"emitDecoratorMetadata": true,
"experimentalDecorators": true,
Run Code Online (Sandbox Code Playgroud)

有些奇怪的是,一些使用装饰器的随机类没有显示出警告,但在同一个项目中却没有.

什么可能导致TypeScript编译器的这种行为?

lin*_*ina 168

尽管VS Code是TypeScript项目的一个很好的编辑器,但它需要一次又一次地踢.通常,在没有任何警告的情况下,某些文件会导致它出现并引发抱怨.大多数修复似乎是保存并关闭所有打开的文件,然后打开tsconfig.json.之后,您应该能够无错误地重新打开有问题的文件.如果不起作用,请起泡,冲洗并重复.

如果您tsconfig.json使用files数组指定其源文件,则只有在引用相关文件时,IntelliSense才能正常运行,以便VS代码可以通过遍历输入文件树找到它.

编辑:'重新加载窗口'命令(现在很久以前添加)应该一劳永逸地解决这个问题.

  • 文件>关闭文件夹>打开文件夹为我工作.这是在我重新启动机器而没有正确关闭vscode之后发生的. (12认同)
  • 谢谢 - 从tsconfig.json中删除"文件"解决问题 (4认同)
  • 答案与我的案子无关,但不知何故帮助我解决了我的问题.我正在使用VS 2015,在更改`xproj`和`tsconfig`文件之间,我错过了我的脚本文件的文件夹列在`tsconfig`的`exclude`部分的事实.希望这有助于某人. (3认同)
  • 我不确定它何时被添加但是命令调色板现在具有"重新加载窗口",这对于这种事情是理想的. (3认同)
  • 1. 转至文件 -> 首选项 -> 设置。2. 搜索“experimentalDecorators” 3. 选中启用/禁用experimentalDecorators 4. 按Ctrl + S 保存设置。 (3认同)
  • 如果我不使用打字稿怎么办?只有javascript es6? (2认同)
  • 打开不包含 tsconfig.json 的单个文件或文件夹将导致此问题。如果您在应用程序内打开一个文件夹而不是打开整个应用程序文件夹,其中将包含 tsconfig.json (2认同)

Man*_*aul 153

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

"javascript.implicitProjectConfig.experimentalDecorators": true

VSCode - >首选项 - >设置

在此输入图像描述

  • 此设置已被弃用。您现在应该使用:`"js/ts.implicitProjectConfig.experimentalDecorators": true` (13认同)
  • `ctrl + ,` 快捷键打开用户设置。在用户设置上单击 3 个点(“...”),然后在弹出窗口中单击“打开 settings.json” 以打开“settings.json” (5认同)
  • 这个答案是最好的,因为没有必要在项目中创建一个单独的文件来解决VSCode问题. (3认同)

Sem*_*jić 89

当您为工作区文件夹选择"src"文件夹时,也会发生此错误.

当选择根文件夹,"src","node_modules"所在的文件夹时,错误消失

  • 来这里发帖.这为我修好了.我通过Angular CLI使用Angular 2. (7认同)
  • 这在Visual Studio Code上适用于我.谢谢 ! (4认同)

小智 84

请按照以下步骤删除此警告消息。 在此处输入图片说明

步骤 1:转到 IDE 中的设置,然后找到或搜索ExperimentalDecorators在此处输入图片说明

第 2 步:然后单击复选框,您的页面中的警告已被删除。

在此处输入图片说明

谢谢快乐编码.........


小智 30

在 VSCode 中,转到文件 => 首选项 => 设置(或 Control+逗号),它将打开用户设置文件。搜索 "javascript.implicitProjectConfig.experimentalDecorators": true 然后检查文件中的 ExperimentalDecorators 复选框,它应该修复它。它对我有用。

在此处输入图片说明


bee*_*est 24

必须添加typescript.tsdk到我的.vscode/settings.json:

"typescript.tsdk": "node_modules/typescript/lib"
Run Code Online (Sandbox Code Playgroud)

  • 这解决了我的问题,但是这行按照[this](https://github.com/Microsoft/TypeScript-Handbook/blob/master/pages/Nightly%20Builds进入`.vscode/settings.json`. MD#视觉工作室码) (5认同)

小智 23

File -> Preferences -> Settings

  • 1. 转至文件 -> 首选项 -> 设置。2. 搜索“experimentalDecorators” 3. 选中启用/禁用experimentalDecorators 4. 按Ctrl + S 保存设置。 (2认同)

Muh*_*ssa 22

在你的项目中创建文件tsconfig.json,然后添加这一行

{
    "compilerOptions": {
        "experimentalDecorators": true,
        "allowJs": true
    }
}
Run Code Online (Sandbox Code Playgroud)


小智 19

对我来说,这个错误“对装饰器的实验性支持是一项在未来版本中可能会发生变化的功能。(等)”仅在 Angular 项目中的 VS Code 中发生,并且仅在创建新服务时发生。

上面的解决方案:“在 Visual Code Studio 中转到文件 >> 首选项 >> 设置,在搜索字段中搜索“装饰器”并检查选项 JavaScript › 隐式项目配置:实验装饰器”解决了该问题。

此外,在终端窗口中停止 ng serve 并重新启动它会使重新编译后错误消失。


Muz*_*ood 15

在 Visual Code Studio 中转到文件 >> 首选项 >> 设置,在搜索字段中搜索“装饰器”并检查图像中的选项。 在此处输入图片说明


Pau*_*l D 15

使用以下命令创建新的 Angular 服务时,vscode 中显示此警告

@Injectable({
  providedIn: 'root'
})
Run Code Online (Sandbox Code Playgroud)

语法(而不是在 app.module.ts 中提供服务)。

警告一直存在,直到我在项目中的某处引用新服务。一旦服务被使用,警告就会消失。无需更改打字稿配置或 vscode 设置。


Bil*_*mad 12

第1步:在VS代码中按 ctrl + ,

第 2 步:在搜索框中输入“js/ts.implicitProjectConfig: Experimental Decorators”

第3步:选中与搜索相关的复选框

在此输入图像描述


Vin*_*raj 10

settings.json在以下位置打开文件<project_folder>/.vscode/settings.json

或者您可以从菜单中打开文件,如下所述

VSCode -> File -> Preferences -> Workspace Settings

experimentalDecorators设置

然后在settings.json文件中添加以下行

{
    "typescript.tsdk": "node_modules/typescript/lib",
    "enable_typescript_language_service": false
}
Run Code Online (Sandbox Code Playgroud)

就这样.关于' experimentalDecorators ',你不会看到任何警告/错误

  • 使用vscode 1.8.1添加"enable_typescript_language_service"后,我收到"未知配置设置" (11认同)
  • 如果您的项目使用Typescript,这是可怕的建议! (4认同)
  • 禁用“enable_typescript_language_service”将有效关闭任何实时 linting TypeScript 功能,请避免此建议。 (2认同)

小智 10

"javascript.implicitProjectConfig.experimentalDecorators": true
Run Code Online (Sandbox Code Playgroud)

会解决这个问题.


Per*_*ges 9

此答案适用于使用Javascript项目但不使用Typescript的人员.代替的tsconfig.json文件,你可以使用jsconfig.json文件.

装饰器警告您要写入文件内的特定情况下:

{
    "compilerOptions": {
        "experimentalDecorators": true
    }
}
Run Code Online (Sandbox Code Playgroud)

要求有问题的行为,最好在配置文件中指定"include",然后重新启动编辑器.例如

{
    "compilerOptions": {
        "target": "ES6",
        "experimentalDecorators": true
    },
    "include": [
        "app/**/*"
    ],
    "exclude": [
        "node_modules"
    ]
}
Run Code Online (Sandbox Code Playgroud)


pet*_*y m 8

不要强调这一点,但一定要添加以下内容

  • 工作区设置不是用户设置

在文件>>首选项>>设置下

"javascript.implicitProjectConfig.experimentalDecorators":true

这解决了我的问题,我尝试了一些我在这里和其他地方找到的建议.


小智 7

在tsconfig.json中添加以下行并重新启动VS Code.

{
    "compilerOptions": {
        "experimentalDecorators": true,
        "target": "es5",
        "allowJs": true
    }
}
Run Code Online (Sandbox Code Playgroud)


Paw*_*ski 7

我最近在Visual Studio 2017下遇到了这个问题-原来是由VS的“功能”引起的-Build操作未设置为Content时忽略了tsconfig.json

因此,将Build操作更改为Content并重新加载解决方案即可解决该问题。


小智 6

  1. 打开VScode。
  2. 按 ctrl+逗号
  3. 按照屏幕截图中的说明进行操作
    1. 搜索实验装饰器
    2. 编辑它


Koj*_*nte 6

如果您使用 cli 编译 *.ts 文件,您可以使用以下命令设置 ExperimentalDecorators:

 tsc filename.ts --experimentalDecorators "true"
Run Code Online (Sandbox Code Playgroud)


小智 6

我在以下语句中遇到此错误

对装饰器的实验性支持是一项在未来版本中可能会发生变化的功能。在 tsconfig 或 jsconfig 中设置“experimentalDecorators”选项以删除此警告。ts(1219)

它在那里是因为我的组件没有在AppModule或(app.module.ts)中注册,我只是给出了像这样的命名空间

从 '../app/abc/abc.component' 导入 { abcComponent };

并在声明中进行了注册


LEM*_*ANE 5

为了清晰和愚蠢。

1) 打开 .vscode/settings.json。

2)在其上添加“typescript.tsdk”:“node_modules/typescript/lib”。

3)保存。

4) 重新启动 Visual Studio Code。


kum*_*etu 5

如果您在 Visual Studio 中工作。您可以尝试此修复

  1. 从 Visual Studio 卸载您的项目
  2. 转到项目主目录并打开“csproj”文件。
  3. 将 TypeScriptExperimentalDecorators 添加到此部分,如图所示

    在此输入图像描述

    1. 在 Visual Studio 中重新加载项目。

在此位置查看更多详细信息。