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

问题描述 投票:146回答:23

我有

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

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

"emitDecoratorMetadata": true,
"experimentalDecorators": true,

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

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

typescript decorator visual-studio-code
23个回答
141
投票

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

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

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


7
投票

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

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

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

“javascript.implicitProjectConfig.experimentalDecorators”:true

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


7
投票

文件 - >首选项 - >设置


5
投票

我最近在Visual Studio 2017下遇到了这个问题 - 原来这是由VS的一个“功能”引起的 - ignoring tsconfig.json when Build action is not set to Content

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


3
投票

为了清晰和愚蠢。

1)打开.vscode / settings.json。

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

3)保存。

4)重新启动Visual Studio代码。


3
投票

请检查你的VS代码中是否存在整个项目的文件夹,而不仅仅是src文件夹,因为如果只打开src,那么ts.config.json(位于项目文件夹中)文件将不在范围内,并且VS将无法识别实验装饰器参数。

在我的例子中,这解决了与此问题相关的所有问题。


2
投票

打开整个项目的文件夹而不是project-name / src

tsconfig.json超出了src文件夹


2
投票

如果您在Visual Studio工作。你可以尝试这个修复

  1. 从visual studio卸载您的项目
  2. 转到项目主目录并打开“csproj”文件。
  3. 将TypeScriptExperimentalDecorators添加到此部分,如图所示 enter image description here 在Visual Studio中重新加载项目。

this位置查看更多详情。


2
投票
  1. 打开VScode。
  2. 按ctrl +逗号
  3. 按照screen shot的指示 搜索experimentalDecorators 编辑它

2
投票

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

 tsc filename.ts --experimentalDecorators "true"

1
投票

我通过从tsconfig.json文件中删除“baseUrl”:“”来更正警告


135
投票

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

"javascript.implicitProjectConfig.experimentalDecorators": true

VSCode - >首选项 - >设置

enter image description here


1
投票

我在Angular 2中创建一个Injectable Services时遇到了同样的问题。我在tsconfig.json中有所有的东西。但是我在ColorsImmutable行得到了这个错误。

@Injectable()
export class ColorsImmutable {

修复是使用providers数组在模块级别或组件级别注册服务。

providers:[ColorsImmutable ],

0
投票

如果打开存在于项目外部的TS文件,则可能会遇到此问题。例如,我正在使用lerna并从另一个包打开一个文件。虽然其他软件包有自己的tsconfig和实验装饰器,但VsCode并不尊重它。


0
投票

我将此选项添加到tsconfig.json,"baseUrl": "front-end"将前端替换为angular-cli项目的名称。


0
投票

您也可以尝试使用ng build。我刚刚重建了应用程序,现在它不符合要求。


84
投票

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

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


23
投票

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

"typescript.tsdk": "node_modules/typescript/lib"

21
投票

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

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

10
投票
"javascript.implicitProjectConfig.experimentalDecorators": true

会解决这个问题。


8
投票

此答案适用于使用Javascript项目但不使用Typescript的人员。您可以使用jsconfig.json文件而不是tsconfig.json文件。

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

{
    "compilerOptions": {
        "experimentalDecorators": true
    }
}

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

{
    "compilerOptions": {
        "target": "ES6",
        "experimentalDecorators": true
    },
    "include": [
        "app/**/*"
    ],
    "exclude": [
        "node_modules"
    ]
}

7
投票

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

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

VSCode -> File -> Preferences -> Workspace Settings

experimentalDecorators settings

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

{
    "typescript.tsdk": "node_modules/typescript/lib",
    "enable_typescript_language_service": false
}

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


7
投票

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

{
    "compilerOptions": {
        "experimentalDecorators": true,
        "target": "es5",
        "allowJs": true
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.