我正在使用tsconfig检查我的js文件。我在custom_types\custom.d.ts
中有我的自定义类型定义
tsconfig.json
{
"compilerOptions": {
"target": "es2020",
"module": "commonjs",
"allowJs": true,
"checkJs": true,
"outDir": "./dist",
"strict": true,
"typeRoots": ["./custom_types/", "node_modules/@types/"],
"types": ["node"],
"esModuleInterop": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true
},
"include": ["src/**/*"]
}
自定义类型/自定义.d.ts
declare global {
const foo: string;
namespace NodeJS {
interface Global {
foo: string;
}
}
}
export default global;
src/app.js
let bar = foo; // Cannot find name 'foo'.ts(2304)
但是,当我在tsconfig中这样做时:
{
...
},
"include": ["src/**/*", "custom_types/custom.d.ts"]
}
一切都很完美。所以这让我认为我的tsconfig
是错误的,TypesScript
完全忽略了这一部分:
"typeRoots": ["./custom_types/", "node_modules/@types/"],
当我试图用自己的自定义类型定义指定文件夹的路径时,我做错了什么?
p.s. "node_modules/@types/"
被TypeScript
正确地拾取(@types
内部的所有东西都对我可用)。但是"./custom_types/"
被忽略。
**UPD:**许多答案都建议使用baseUrl
和paths
做一些事情。但是,这样做对我没有任何好处:
"baseUrl": "./",
"paths": {
"@custom_types": ["*", "./custom_types/*"]
},
"typeRoots": ["@custom_types/custom.d.ts", "node_modules/@types/"],
2条答案
按热度按时间9ceoxa921#
我以前做过,我记得那是一场斗争。他们可能在新版本的typescript中修改了它,但我还没有测试过。我之前的tsconfig看起来像:
请查看include和paths设置,我在其中指定了自定义类型定义文件夹的位置。这在typescript 2.9.1中工作。
关于typeRoots:这个选项是为了向后兼容typings而添加的,这就是为什么它甚至没有出现在文档中,如果你不使用类型,就不应该使用它。更多信息可以在这里找到。
z0qdvdin2#
在导入
js
文件之前,您需要编译Typescript文件。范例:
或者你可以看这里:'typeRoots' fails to find d.ts declaration files in project