为什么Typescript在Visual Studio Code中忽略了我的tsconfig.json?

Tho*_*der 18 typescript visual-studio-code

我得到了这样的项目设置

project/
|
+---src/
|   |
|   +---app/
|       |
|       sample.ts
|
+---typings/
+---tsconfig.json
Run Code Online (Sandbox Code Playgroud)

这是我的 tsconfig.json

{
    "compilerOptions": {
        "rootDir": "src",
        "target": "es5",
        "module": "commonjs",
        "moduleResolution": "node",
        "emitDecoratorMetadata": true,
        "experimentalDecorators": true,
        "removeComments": true,
        "sourceMap": true,
        "noImplicitAny": false,
        "outDir": "dist"
    },
    "exclude": [
        "node_modules",
        "src/assets",
        "src/lib"
    ]
}
Run Code Online (Sandbox Code Playgroud)

我想知道的是,为什么VSC会指出诸如此类的错误

在VSC中突出显示错误

当显然没有任何错误("experimentalDecorators": true被设置tsconfig.json),并且应用程序转换得很好?而且它不仅仅是装饰器,Promise而且还突出显示了(我确保tsconfig.json在同一个文件夹中typings,我得到了es6-shim安装的打字).

不确定是否重要,但我现在正在typescript@2.0.0-dev.20160707.

n1k*_*1kk 32

就我而言,问题是.ts我正在编辑的文件未包含在tsconfig.json.

我添加了一个新scripts/build.ts文件,其中tsconfig.json有:

{
  include: ["src/**/*.ts"]
}
Run Code Online (Sandbox Code Playgroud)

必须添加:

{
  include: ["src/**/*.ts", "scripts/**/*.ts"]
}
Run Code Online (Sandbox Code Playgroud)

  • 这就是解决我的问题的方法,谢谢。我只需要将 `src/*.ts` 更改为 `src/**/*.ts` ,我的所有问题都消失了,谢谢! (2认同)

Sha*_*tin 25

简答

tsconfig.json当您使用较新版本的TypeScript时,VS Code会忽略您,而不是VS Code提供的开箱即用版本.

您正在使用TypeScript 2.0.0-dev.20160707,因此可能正在发生这种情况.

如何在VS Code中使用较新的TypeScript版本

首先,将TypeScript安装到您的node_modules.选择稳定或每晚.

npm install typescript --save-dev // stable
npm install typescript@next --save-dev // nightly
Run Code Online (Sandbox Code Playgroud)

其次,将结果lib相对路径添加到您的settings.json.也就是说,settings.json通过文件>设置>用户设置在VS代码中打开,并添加以下属性.

{
  "typescript.tsdk": "node_modules/typescript/lib"
}
Run Code Online (Sandbox Code Playgroud)

请注意,如果您将globalScript全局安装(-g)而不是安装到项目中node_modules,请typescript.tsdk相应地调整您的位置.

第三,确保你有效tsconfig.json.这是一个例子.

{
    "compileOnSave": false,
    "compilerOptions": {
        "sourceMap": true,
        "target": "es5",
        "experimentalDecorators": true,
        "noImplicitAny": false
    },
    "exclude": [
        "node_modules"
    ],
    "filesGlob": [
        "src/**/*.ts",
        "test/**/*.ts",
        "typings/index.d.ts"
    ]
}
Run Code Online (Sandbox Code Playgroud)

文档

VS Code附带了最近稳定版的TypeScript.如果要使用较新版本的TypeScript,可以定义typescript.tsdk设置(文件>首选项>用户/工作区设置),指向包含TypeScript tsserver.js和相应的lib.*.d.ts文件的目录.目录路径可以是工作空间目录的绝对路径或相对路径.通过使用相对路径,您可以轻松地与团队共享此工作区设置并使用最新的TypeScript版本(npm install typescript @ next).有关如何安装TypeScript的每晚版本的更多详细信息,请参阅此博客文章.(重点补充).

另见:https://blogs.msdn.microsoft.com/typescript/2016/01/28/announcing-typescript-1-8-beta/

  • 对我来说,这是因为我在 tsconfig 中定义了 `include: ["./src/index.ts"]`。我这样做是为了让 TypeScript 只会为包含的文件生成类型定义(tree shake),但它似乎会让 VS Code 忽略所有其他文件的本地 tsconfig.ts。 (6认同)
  • 对我来说,关键是_valid_`tsconfig.json`-如果VSCode告诉您您的`tsconfig.json`存在问题,而不只是默默地忽略它,那将大有帮助! (4认同)

Tho*_*der 5

找到typescript安装到 by的文件夹npm,在我的情况下是:

C:\Users\<username>\AppData\Roaming\npm\node_modules\typescript\\lib
Run Code Online (Sandbox Code Playgroud)

在其他文件中,应该有:

lib.d.ts
tsserver.js
Run Code Online (Sandbox Code Playgroud)

里面。现在打开设置:

File -> Preferences -> User Settings/Workspace Settings
Run Code Online (Sandbox Code Playgroud)

这应该打开一个文件settings.json,添加:

{
    "typescript.tsdk": "C:\\Users\\<username>\\AppData\\Roaming\\npm\\node_modules\\typescript\\lib"
}
Run Code Online (Sandbox Code Playgroud)

(注意双反斜杠\\),保存并 - 重要 - 重新启动 Visual Studio Code。享受。