TypeScript编译

时间:2016-07-08 16:15:35

标签: typescript decorator visual-studio-code

我有

  

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

即使我在tsconfig.json中的compilerOptions也有设置:

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

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

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

34 个答案:

答案 0 :(得分:131)

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

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

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

答案 1 :(得分:128)

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

"javascript.implicitProjectConfig.experimentalDecorators": true

VSCode - >偏好 - >设置

enter image description here

答案 2 :(得分:83)

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

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

答案 3 :(得分:56)

请按照以下步骤删除此警告消息。 enter image description here

步骤1: 转到IDE中的设置,然后找到或搜索 experimentalDecorators enter image description here

第2步:然后单击复选框,警告已从页面中删除。

enter image description here

谢谢您的编码..........

答案 4 :(得分:28)

在VSCode中,转到File => Preferences => Settings(或Control +逗号),它将打开User Settings文件。搜索“ javascript.implicitProjectConfig.experimentalDecorators”:正确 然后选中该文件的experimentalDecorators复选框,它将对其进行修复。对我有用。

enter image description here

答案 5 :(得分:22)

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

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

答案 6 :(得分:21)

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

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

答案 7 :(得分:18)

对我来说,此错误“对装饰器的实验性支持是一项功能,将来的版本中可能会更改。(等)”仅在Angular项目的VS Code中并且仅在创建新服务时发生。

上面的解决方案:“在Visual Code Studio中转到文件>>首选项>>设置,在搜索字段中搜索“装饰器”,然后检查选项JavaScript›隐式项目配置:实验装饰器”。

此外,在终端窗口中停止ng服务并重新启动它会使重新编译后错误消失。

答案 8 :(得分:10)

"javascript.implicitProjectConfig.experimentalDecorators": true

将解决这个问题。

答案 9 :(得分:8)

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

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

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

要求提出错误的行为,最好指定" include"在配置文件中,然后重新启动编辑器。 E.g。

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

答案 10 :(得分: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
}

这就是全部。您将看不到关于&#39; experimentalDecorators &#39;

的警告/错误

答案 11 :(得分:7)

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

  • 工作区设置而非用户设置
文件&gt;&gt;下的

偏好设置&gt;&gt;设置

&#34; javascript.implicitProjectConfig.experimentalDecorators&#34;:true

这解决了我的问题,我在这里和其他地方尝试了很多建议。

答案 12 :(得分:7)

在Visual Code Studio中 转到文件>>首选项>>设置,在搜索字段中搜索“装饰器”,然后检查图像中的选项。 enter image description here

答案 13 :(得分:5)

使用

创建新的Angular服务时,我在vscode中显示此警告。
@Injectable({
  providedIn: 'root'
})

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

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

答案 14 :(得分:3)

为了清晰和愚蠢。

1)打开.vscode / settings.json。

2)添加&#34; typescript.tsdk&#34;:&#34; node_modules / typescript / lib&#34;在它上面。

3)保存。

4)重新启动Visual Studio代码。

答案 15 :(得分:3)

请检查您是否在VS Code中指定了整个项目的文件夹,而不仅仅是src文件夹,因为如果仅打开src,则ts.config.json(位于项目文件夹中)文件将不在范围,而VS无法识别实验装饰器参数。

就我而言,这解决了与此问题有关的所有问题。

答案 16 :(得分:3)

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

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

答案 17 :(得分:3)

文件->首选项->设置

答案 18 :(得分:2)

我的以下声明有此错误

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

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

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

,并在声明

中进行了注册

答案 19 :(得分:2)

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

  1. 从visual studio卸载您的项目
  2. 转到项目主目录并打开&#34; csproj&#34;文件。
  3. 将TypeScriptExperimentalDecorators添加到此部分,如图所示

    enter image description here

    1. 在Visual Studio中重新加载项目。
  4. this位置查看更多详情。

答案 20 :(得分:2)

  1. 打开VScode。
  2. 按ctrl +逗号
  3. 按照screen shot中的说明进行操作
    1. 搜索 experimentalDecorators
    2. 编辑

答案 21 :(得分:2)

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

  

tsconfig.json超出了src文件夹

答案 22 :(得分:1)

如果您使用Deno JavaScript和TypeScript运行时,并且在tsconfig.json或VSCode ide设置中启用了experimentalDecorators:true。不起作用。根据Deno的要求,运行Deno文件时需要提供tsconfig作为标志。参见Custom TypeScript Compiler Options

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

$ deno test -c tsconfig.json

如果是文件,则类似

 $ deno run -c tsconfig.json mod.ts

我的tsconfig.json

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

答案 23 :(得分:1)

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

答案 24 :(得分:1)

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

 tsc filename.ts --experimentalDecorators "true"

答案 25 :(得分:1)

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

答案 26 :(得分:0)

因此,您可以通过将模块名称与文件名匹配来解决此问题。如果模块名称为BankSpecialtyModule,则文件名应为。 bank-specialty.module.ts

答案 27 :(得分:0)

当我创建一个新模块并将我的* .module.ts和* -routing.module.ts文件移动到另一个文件夹时,我遇到了此错误。在删除两个文件并在新文件夹上创建模块后,它可以正常工作。 环境Angular版本9和Angular CLI版本9.1.0

答案 28 :(得分:0)

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

答案 29 :(得分:0)

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

答案 30 :(得分:0)

在Angular 2中创建可注入服务时遇到了同样的问题。 我在tsconfig.json中有所有的东西。但是我在ColorsImmutable行遇到了这个错误。

@Injectable()
export class ColorsImmutable {
  

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

providers:[ColorsImmutable ],

答案 31 :(得分:0)

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

答案 32 :(得分:0)

您可以使用此代码运行

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

答案 33 :(得分:0)

对于我来说,我通过在"include": [ "src/**/*"]文件中设置tsconfig.json并重新启动vscode来解决了此问题。 我从github问题获得了此解决方案:https://github.com/microsoft/TypeScript/issues/9335