为什么Typescript忽略Visual Studio代码中的tsconfig.json?

9njqaruj  于 2023-01-31  发布在  TypeScript
关注(0)|答案(7)|浏览(643)

我的项目设置是这样的

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会指示以下错误

显然没有任何错误("experimentalDecorators": true设置在tsconfig.json中),应用程序运行良好?而且它不仅仅是装饰器,Promise等也被突出显示(我确保tsconfig.jsontypings在同一个文件夹中,我安装了es6-shim的类型)。
不知道这是否重要,但我现在在typescript@2.0.0-dev.20160707上。

qlvxas9a

qlvxas9a1#

简短回答

当您使用的TypeScript版本比VS Code提供的现成版本更新时,VS Code将忽略您的tsconfig.json
您使用的是TypeScript 2.0.0-dev.20160707,所以这可能就是正在发生的事情。

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

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

npm install typescript --save-dev // stable
npm install typescript@next --save-dev // nightly

其次,将得到的lib相对路径添加到您的settings.json中,即在VS Code中通过File〉Settings〉User Settings打开settings.json,并添加以下属性。

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

注意,如果您全局安装了TypeScript(-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代码随附了一个最新稳定版本的TypeScript。**如果要使用较新版本的TypeScript,**可以定义typescript.tsdk设置(文件〉首选项〉用户/工作区设置)指向包含TypeScript tsserver.js和相应lib.*.d.ts文件的目录。目录路径可以是绝对路径,也可以是相对于工作区目录的相对路径。通过使用相对路径,你可以很容易地与你的团队共享这个工作区设置,并使用最新的TypeScript版本(npm install typescript@next)。2参考这个博客文章来获得更多关于如何安装夜间版本的TypeScript的细节。
另请参阅:https://blogs.msdn.microsoft.com/typescript/2016/01/28/announcing-typescript-1-8-beta/

qzwqbdag

qzwqbdag2#

在我的例子中,问题是我正在编辑的.ts文件没有包含在tsconfig.json中。
我添加了一个新的scripts/build.ts文件,在tsconfig.json中我有:

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

不得不补充:

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

ozxc1zmp3#

找到npm安装到的文件夹typescript,在我的例子中是:

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"
}

(mind双反斜杠\\),保存并-重要的是-重新启动Visual Studio代码。

kg7wmglp

kg7wmglp4#

在我的例子中,问题是我的tsconfig.json放错了地方。它在.vscode文件夹中,但它应该在上一级。
当我点击右下角的Typescript版本时,我注意到了这一点,VSCode菜单告诉我没有找到tsconfig文件,并提示我创建一个。

o3imoua4

o3imoua45#

我面临着同样的错误,对我来说,问题是与"include": [...]选项,这是设置不正确.(是不是涵盖所有的文件在src文件夹)

ocebsuys

ocebsuys6#

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

oyjwcjzk

oyjwcjzk7#

有一个技巧你可能注意到了,也可能没有注意到,当你改变tsconfig时,VS Code无法识别它,你必须重新启动TypeScript Server。
我在将7个React应用合并到Turborepomonorepos时遇到了类似的情况,我对tsconfig/.eslintrc无法实时反映我对它们所做的更改感到困扰,因此我构建了这个小扩展来监控这些配置文件和自动重启TypeScript / ESLint服务器。希望它能有所帮助。

VS代码扩展名:

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

相关问题