繁体   English   中英

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

[英]Why does Typescript ignore my tsconfig.json inside Visual Studio Code?

我的项目设置是这样的

project/
|
+---src/
|   |
|   +---app/
|       |
|       sample.ts
|
+---typings/
+---tsconfig.json

这是我的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"
    ]
}

我想知道的是,为什么 VSC 会指示错误,例如

VSC 中的错误突出显示

当显然完全没有错误时( "experimentalDecorators": truetsconfig.json中设置),并且应用程序转译得很好? 而且它不仅仅是装饰器, Promise等也被突出显示(我确保将tsconfig.json放在与 typings 相同的文件夹中,并且我安装了typings es6-shim的 typings)。

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

简答

当您使用比 VS Code 提供的更新版本的 TypeScript 时,VS Code 会忽略您的tsconfig.json

您正在使用 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

其次,将生成的lib相对路径添加到settings.json 即通过文件>设置>用户settings.json在VS Code中打开settings.json ,并添加以下属性。

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

请注意,如果全球的装机量打字稿( -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"
    ]
}

文档

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/annoucing-typescript-1-8-beta/

找到文件夹typescript安装由npm ,于我而言,这是:

C:\Users\<username>\AppData\Roaming\npm\node_modules\typescript\\lib

在其他文件中,应该有:

lib.d.ts
tsserver.js

里面。 现在打开设置:

File -> Preferences -> User Settings/Workspace Settings

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

{
    "typescript.tsdk": "C:\\Users\\<username>\\AppData\\Roaming\\npm\\node_modules\\typescript\\lib"
}

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

就我而言,问题是我的 tsconfig.json 位置错误。 它在.vscode文件夹中,但它应该上升一个级别。

当我点击右下角的 Typescript 版本时,我注意到了这一点,VSCode 菜单告诉我没有找到 tsconfig 文件并提示我创建一个。

我遇到了同样的错误,对我来说问题出在"include": [...]选项,它设置不正确。(没有覆盖src文件夹中的所有文件)

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

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

{
  include: ["src/**/*.ts"]
}

不得不补充:

{
  include: ["src/**/*.ts", "scripts/**/*.ts"]
}

确保您的项目中没有jsconfig.json文件或任何其他覆盖配置文件。 这为我解决了问题!

有一个技巧您可能已经注意到,也可能没有注意到。 当你更改tsconfig时,VS Code 无法识别它,你必须重新启动 TypeScript 服务器。

当我将 7 个 React 应用程序合并到Turborepo monorepos 时,我遇到了类似的情况,当我对它们进行更改时, tsconfig/.eslintrc无法实时反映这一事实,因此我构建了这个小扩展监视这些配置文件并自动重启 TypeScript/ESLint 服务器 希望能帮助到你。

VS代码扩展:

https://marketplace.visualstudio.com/items?itemName=neotan.vscode-auto-restart-typescript-eslint-servers

图片

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM