VS Code中的“找不到名称'x'”Typescript错误不一致

时间:2016-06-22 20:15:03

标签: angularjs typescript ionic-framework angular visual-studio-code

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

enter image description here

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

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

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

3 个答案:

答案 0 :(得分:7)

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

TL;博士

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

更长的版本

  

添加文件[部分]会将我们的项目限制为这两个文件,如果您打开其他未被这两个文件引用的文件,则会将它们最终置于一个独立的虚拟项目中。您需要省略文件部分(然后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
    }
}

问题解决了!

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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