我收到了警告…

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

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

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

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

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


当前回答

我通过从tsconfig中删除"baseUrl": ""来纠正这个警告。json文件

其他回答

如果你使用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"
  }
}

为了清晰和愚蠢。

1) 打开 .vscode/settings.json。

2)添加“typescript”。Tsdk ": "node_modules/typescript/lib"

3)保存。

4)重启Visual Studio代码。

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

或者您可以从下面提到的菜单中打开该文件

VSCode -> File -> Preferences -> Workspace Settings

然后在“设置”中添加以下行。json文件

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

这是所有。关于'experimentalDecorators'你不会看到任何警告/错误

我在Angular 2中创建可注入服务时也遇到了同样的问题。 我把所有的东西都放在tsconfig中。我仍然在ColorsImmutable行得到这个错误。

@Injectable()
export class ColorsImmutable {

修复方法是在模块级或组件级注册服务 使用providers数组。 提供者:[ColorsImmutable],

这个错误也可能意味着tsconfig.json中有错误 以我为例,我在图书馆周围移动,没有固定路径

"extends": "../../tsconfig.base.json",

修复后,错误立即消失,不需要重新启动VS Code。