我收到了警告…

对装饰器的实验性支持是一个在未来版本中可能会更改的特性。设置'experimentalDecorators'选项'以删除此警告。

... 即使我的编译选项在tsconfig。Json有以下设置:

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

奇怪的是,一些使用装饰器的随机类不显示警告,但同一项目中的其他类会显示警告。

在TypeScript编译器中,什么会导致这种行为?


当前回答

如果你使用Deno JavaScript和TypeScript运行时,并且在tsconfig中启用了experimentalDecorators:true。json或VSCode ide设置。这是行不通的。根据Deno要求,在运行Deno文件时需要提供tsconfig作为标志。参见自定义TypeScript编译器选项

在我的特殊情况下,我正在运行一个Deno测试并使用。

$ deno test -c tsconfig.json

如果它是一个文件,你会有

 $ deno run -c tsconfig.json mod.ts

我tsconfig.json

{
  "compilerOptions": {
    "allowJs": true,
    "experimentalDecorators": true,
    "emitDecoratorMetadata": true,
    "module": "esnext"
  }
}

其他回答

如果您正在使用cli编译*。在ts文件中,可以使用以下命令设置experimentalDecorators:

 tsc filename.ts --experimentalDecorators "true"

虽然VS Code对于TypeScript项目来说是一个很棒的编辑器,但它需要时不时地踢一下。通常,在没有警告的情况下,某些文件会导致它崩溃并报错。大多数修复方法似乎是保存并关闭所有打开的文件,然后打开tsconfig.json。在此之后,您应该能够重新打开有问题的文件而不会出现错误。如果不奏效,就打泡沫,冲洗,然后重复。

如果你的tsconfig。json使用files数组指定它的源文件,智能感知只有在有问题的文件被引用时才能正常工作,这样VS Code可以通过遍历输入文件树找到它。

编辑:“重新加载窗口”命令(多年前添加的)应该一劳永逸地解决这个问题。

如果您打开存在于项目外部的TS文件,您可能会遇到这个问题。例如,我正在使用lerna,并从另一个包中打开了一个文件。尽管另一个包有自己的tsconfig和实验性的装饰器,但VsCode并不尊重它。

我在下面的语句中有这个错误

对装饰器的实验性支持是一个在未来版本中可能会更改的特性。在你的tsconfig或jsconfig中设置'experimentalDecorators'选项来删除这个警告。ts(1219)

这是因为我的组件没有在AppModule或(app.module.ts)中注册 我简单地给命名空间

import {abcComponent} from '../app/abc/abc.component';

并在申报中进行了登记

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

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