【问题标题】:Experimental decorators warning in TypeScript compilationTypeScript 编译中的实验性装饰器警告
【发布时间】:2016-11-11 07:05:00
【问题描述】:

我收到警告...

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

...即使我在 tsconfig.json 中的 compilerOptions 具有以下设置:

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

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

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

【问题讨论】:

  • 你试过重启 VS Code 了吗?我发现有时在更改 tsconfig.json 后这是必要的。
  • 碰巧,如果其他人遇到使用 VS Professional 而不是 VS Code 的情况,您可能已经手动将 .ts 文件添加到 Angular 项目中;如果是这样,则默认的 TS 编译与 Angular CLI 冲突。右键单击文件 -> 属性 -> 构建操作:无。然后根据需要重新启动 VS。
  • VS Code 重启帮我解决了这个问题。
  • 正如@paulsm4 所说,在错误的目录中启动 VSCode 后,问题出现在我的案例中。您想在 tsconfig.json 用于您的项目的目录中启动 VSCode。
  • 关闭项目并重新打开项目解决了我的问题。

标签: typescript decorator visual-studio-code


【解决方案1】:

以下语句出现此错误

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

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

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

并在声明

中注册

【讨论】:

  • 在创建一个包含“@Injectable() export class MyService {}”的新文件后,我得到了完全相同的错误。没有什么可添加到 AppModule (ng10)
  • 我有同样的问题
【解决方案2】:

在使用

@Injectable({
  providedIn: 'root'
})

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

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

【讨论】:

    【解决方案3】:

    您可以使用此代码运行

     tsc .\src\index.ts --experimentalDecorators "true" --emitDecoratorMetadata "true"
    

    【讨论】:

      【解决方案4】:

      在我的情况下,我通过在我的 tsconfig.json 文件中设置 "include": [ "src/**/*"] 并重新启动 vscode 解决了这个问题。 我从 github 问题中得到了这个解决方案:https://github.com/microsoft/TypeScript/issues/9335

      【讨论】:

        【解决方案5】:

        我也有同样的问题。它是通过导入其他类的“装饰器警告”类来修复的。

        【讨论】:

          【解决方案6】:

          我在我的项目中使用了 React 和 Nest。 在后端显示了这个错误,但是将这两行添加到 react 的 tsconfig.json 中由于某种原因解决了这个问题。此外,以上所有内容都对我不起作用

          "compilerOptions": {
              ...
              "experimentalDecorators": true,
              "strictPropertyInitialization": false
          },
          

          【讨论】:

            【解决方案7】:

            就我而言,我只需要将我创建的组件或模块导入另一个模块(例如共享模块)。不知何故,VS Code 实现了文件存在。

            【讨论】:

              猜你喜欢
              • 2017-05-25
              • 2018-04-05
              • 2017-02-08
              • 2021-11-01
              • 2018-11-19
              • 2018-03-31
              • 2020-11-08
              • 2015-10-22
              • 2016-04-27
              相关资源
              最近更新 更多