gpt4 book ai didi

使用继承的 tsconfig 时,TypeScript 编译器找不到类型

转载 作者:搜寻专家 更新时间:2023-10-30 21:01:54 24 4
gpt4 key购买 nike

我怀疑 tsconfig.json inheritance 能否充分发挥应有的作用。并且“typeRoots”设置没有正确继承或根本没有继承。

http://www.typescriptlang.org/docs/handbook/tsconfig-json.html

(下面的文件夹结构)

web.site -> tsconfig.json
- typings
- node_modules
- scripts
- ts
- tests
- ts -> tsconfig.json (this tsconfig extends/inherits web.site - see contents below)

如果我在我的 web.site 文件夹中运行 tsc 命令,它会找到类型并成功编译。大概是因为它正确使用了 typeRoots 设置。

如果我在我的测试文件夹中运行 tsc 命令,它找不到任何类型并且无法编译。您可以假设错误只是未能找到它应该在“typings”文件夹中找到的声明的引用。

我可以将相同的文件从测试(失败)复制到根网站,然后编译成功。

显然,它没有正确使用 tsconfig.json,因为我已经设置了继承,它应该通过继承的 typeRoots 设置找到类型。但不是。

我是否应该将继承视为不成熟的东西并为此使用单独的 tsconfigs?

在 web.site/tsconfig.json 中:

{
"compileOnSave": true,
"compilerOptions": {
"listFiles": true,
"removeComments": true,
"sourceMap": true,
"module": "es6",
"moduleResolution": "classic",
"outDir": "scripts/js",
"typeRoots": [
"node_modules/@types",
"typings"
]
},
"include":[
"scripts/ts/**/*"
]

在测试/tsconfig.json 中:

{
"extends": "../../tsconfig.json",
"compilerOptions": {
"outDir": "js",
"removeComments": false
},
"include": [
"ts/**/*"
]
}

最佳答案

这个问题有两个部分:

  1. 了解哪些属性可以继承,哪些不可以

    虽然我没有找到任何官方文档,但在原始Configuration Inheritance中有一些讨论。关于哪些属性可以被继承以及哪些属性必须在叶配置文件中的建议。

    根据我的实验,我发现一些基于路径的属性,例如 baseUrlpaths,不能被继承。我没有尝试使用 typeRoots,所以我不能肯定地说,但设计可能不支持它。

  2. 了解相对路径是如何解析的

    解析路径时,TypeScript 将使用叶子配置文件的位置(它称为“原始文件”)作为解析相对路径的当前工作目录。

    在您提到的示例中,无法成功配置继承的 typeRoots,因为在使用 web.site/tsconfig.jsonnode_modules 位于兄弟文件夹中,而当使用 tests/tsconfig.json 时,node_modules 位于上面的祖先文件夹中。

关于使用继承的 tsconfig 时,TypeScript 编译器找不到类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41627190/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com