【问题标题】:Errors when using decorators in Visual Studio Code在 Visual Studio Code 中使用装饰器时出错
【发布时间】:2021-03-18 13:04:52
【问题描述】:

我在使用装饰器时尝试将 TypeScript 编译为 JavaScript 时遇到问题。我得到的错误是这样的:

app.ts:11:7 - 错误 TS1219:对装饰器的实验性支持是 在未来版本中可能会更改的功能。设置 'tsconfig' 或 'jsconfig' 中的 'experimentalDecorators' 选项 删除此警告。

11 class Person {
         ~~~~~~

我一直在 StackOverflow 和其他网站上搜索修复它的方法,但似乎没有什么对我有用。这是我已经尝试过的:

  • 我的 tsconfig.json 文件中已经有 "experimentalDecorators": true
  • 我在设置文件中添加了"javascript.implicitProjectConfig.experimentalDecorators": true
  • 我尝试禁用所有 VSCode 扩展
  • 我尝试多次重启VSCode并以多种方式打开项目文件夹

无论如何,我一直收到同样的错误。我的 TypeScript 版本是 4.1.2

编辑:我将我的项目上传到谷歌驱动器this link

【问题讨论】:

  • 您的 VS 代码可以使用不同版本的 TS。请仔细检查VS代码的右下角,TS VS代码使用哪个版本
  • @captain-yossarian 上面写着4.0.3
  • 点击4.0.3,选择4.1.2
  • @captain-yossarian 我没有那个选项。我只能选择:“打开 tsconfig”、“选择 TypeScript 版本 ... 4.0.3”和“TypeScript 帮助”。 4.1.2版本是我在终端输入tsc -v得到的。

标签: javascript typescript visual-studio-code


【解决方案1】:

我建议您再尝试一件事,检查您的tsconfig.json,看看这是否包含您的源文件。

我假设你的文件位于:src/index.ts,所以你可能还需要在配置文件中include

tsconfig.json

{
  "compilerOptions": {
    // ...
    "experimentalDecorators": true
  },
  "include": [
    // Include your source file as well
    "src"
  ],
}

如果使用输入文件(您自己的模式)运行

在这种情况下,tsc 不允许您再使用自己的配置,即tsconfig.json 文件。

因此您需要通过 CLI 指定您的选项,如下所示:

tsc -w '.\src\app.ts' --experimentalDecorators --target es6

【讨论】:

  • 感谢您的回答。我的 app.ts 文件位于 src 文件夹下。当我将 TypeScript 编译为 JavaScript 时,我在终端中写入 tsc -w .\src\app.ts,如果我这样做,是否需要您指定的代码?我将我的项目上传到谷歌驱动器here,希望它有用。
  • 不。如果您尝试在 CLI 中将特定文件作为参数运行,您还必须通过 CLI 设置您自己的配置,在这种情况下 --experimentalDecorators。否则,您只需运行 tsc
  • 我想奖励这个问题(我有 24 小时的时间),尽管我仍然没有设法解决我的问题。您对如何修复它还有其他建议吗?
  • 你试过我的建议了吗?综上所述,如果你想通过指定src\app.ts来运行你自己的文件,你必须设置你自己的构建选项tsc -w .\src\app.ts --experimentalDecorators(因为tsc不允许你再使用你的tsconfig.json
  • 我现在明白了。所以,现在我尝试只运行“tsc”并且它正在工作!而且我没有更改 tsconfig 文件或设置中的任何内容。应该是这样吗?
【解决方案2】:

在 VSCode 中转到preferences -> settings,在搜索设置输入中键入javascript,然后您将看到Javascript > Implicit Project Config: Experimental Decorators 的选项。检查并保存设置文件。

【讨论】:

  • 感谢您的回答,ifxli。我已经检查过了。它说This setting has been deprecated in favor of JS/TS > Implicit Project Config: Experimental Decorators.。这可能是问题吗?
【解决方案3】:

添加设置

{
  ...
  "js/ts.implicitProjectConfig.experimentalDecorators": true,
  ...
}

【讨论】:

  • 感谢您的回答。不过,我也已经尝试过了。由于某种原因,它仍然无法正常工作!
猜你喜欢
  • 2017-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-26
  • 1970-01-01
  • 2020-08-02
  • 2019-09-29
  • 2022-11-14
相关资源
最近更新 更多