VS Code 中不一致的“找不到名称‘x’”打字稿错误

Posted

技术标签:

【中文标题】VS Code 中不一致的“找不到名称‘x’”打字稿错误【英文标题】:Inconsistent "Cannot find name 'x'" Typescript errors in VS Code 【发布时间】:2016-10-24 22:49:32 【问题描述】:

我的应用编译(转译)很好,但 Visual Studio Code 仍然显示很多错误:

在某些情况下(例如angularionic),问题是无法识别通过我们包含 Angular/Ionic 添加的全局变量/命名空间。大多数错误的形式是“找不到名称'angular/ionic/ng”(等)。

更奇怪的是,我注意到在我加载 VS Code 时最初打开的文件根本没有任何错误。红色下划线的错误位于其他选项卡/编辑器的 other 文件中。

发生了什么事?如何让 VS Code 始终如一地承认这些全局变量/命名空间确实存在?

【问题讨论】:

【参考方案1】:

在追逐这个问题的许多悲伤日子之后 - 我终于在 VS Code GitHub 上找到了一个 GitHub Issue,它解释了发生了什么。

tl;博士

我的tsconfig.json 文件配置不正确。为了解决这个问题,我删除了files 部分。您可能还需要在项目中删除它,或者只是“修复”它以包含所有相关的 .ts 文件。

加长版

添加文件 [部分] 将我们的项目限制为这两个文件,并且如果您打开这两个文件未引用的其他文件,那么它们最终会出现在一个独立的虚拟项目中。您要么需要省略 files 部分(然后 tsconfig.json 文件下的所有 .ts 文件将自动被视为项目的一部分),要么您需要在该部分中列出项目的所有文件。

我原来的 `tsconfig.json 文件是:


    "compilerOptions": 
        "target": "es5",
        "sourceMap": true,
        "removeComments": true,
        "noImplicitAny": true
    ,
    "files": [
        "typings/index.d.ts",
        "src/typings/index.d.ts"
    ]

所以,VS Code 认为我的项目只包含两个文件。我加载的其他 .ts 文件被认为是“孤立的虚拟项目”——不难理解它们为什么会产生错误。

我将tsconfig.json 文件更改为以下内容:


    "compilerOptions": 
        "target": "es5",
        "sourceMap": true,
        "removeComments": true,
        "noImplicitAny": true
    

问题解决了!

【讨论】:

好的,太棒了!!!!!!!我有 filesGlob 和一个空的 files 数组。按照您的建议删除了 files 数组,重新启动 vscode 和瞧 !!!!!! 1,000,000 谢谢!!!!!!!!!!!!!!!!!!!!!!!!!!!! 没问题!我很高兴我持续的痛苦至少可以减轻你的痛苦! :) @MikeGraham 关于重启的部分很重要【参考方案2】:

就我而言,我根本没有tsconfig.json

使用默认值创建它可以解决问题。

【讨论】:

【参考方案3】:

对我来说,如果我打开指向应用程序子目录(如“src”)而不是应用程序根目录的 vscode,我也会遇到这个问题。也许这是因为 typescript.config 在根目录中,但我不确定是不是这个原因。

【讨论】:

以上是关于VS Code 中不一致的“找不到名称‘x’”打字稿错误的主要内容,如果未能解决你的问题,请参考以下文章

VS Code:在保存文件时观看打字稿

无法在 VS Code 中调试当前的打字稿文件,因为找不到相应的 JavaScript

如何让 VS Code 识别单回购包之间的打字稿声明?

如何让 VS Code 智能感知在多个 node_modules 文件夹中搜索打字稿

如何在 VS Code 中为模板中的 vue 道具启用 Typescript 打字和智能感知?

ESLint 在 VS Code 中不起作用?