我有一个用create-react-app-ts创建的项目
我还有一组d.ts
文件,它们是从JSON模式生成的接口。他们为远程API定义了一些接口。
我希望这些d.ts
文件在整个项目中都是“全局”可用的,而不需要通过文件名直接引用它们。类似于Promise<T>
定义在全球范围内可用。
我尝试修改tsconfig
,并将path/to/**/*.dts
添加到include
以及files
中。我还尝试将路径添加到"typeRoots"
下的compilerOptopns
。
这使项目可以编译,但是VSCode没有为这些接口提供IntelliSense,并强调它们为未知。
答案 0 :(得分:1)
如果TypeScript编译没有错误,但是VSCode仍然无法识别全局类型并添加适当的智能感知,则您的项目可能文件太多,并且对所需文件的了解不够明确要检查的TypeScript。
要向全局类型添加智能感知,VSCode会遍历所有可用文件,因为您没有指定要检查的文件或检查范围太广。文件过多,VSCode停止浏览。
使用typeRoots
声明您的全局类型文件夹/文件应该足以让VSCode找出应查找的文件。 如果没有发生,请考虑在include
字段中指定您希望intellisense工作的所有路径,或者在exclude
字段中删除所有不需要的文件。 VSCode应该紧随其后,将intellisense添加到丢失的文件中。
{
"compilerOptions": {
"typeRoots": [
"path/to/**/*.d.ts"
],
"include": [
// Add all paths you want intellisense to work
"path/to/where/you/expect/intellisense/to/work",
"path/to/another/file/or/folder"
]
}
}
答案 1 :(得分:0)
基于tsconfig compiler options,您应该使用选项Action
。文档的This section描述了ActionLink
,typeRoots
和@types
之间的区别。
对于您的具体情况,此typeRoots
文件应该可以解决问题:
types
如果您还使用npm中的类型定义,则还应该添加tsconfig.json
。
{
"compilerOptions": {
"typeRoots" : ["./type-definitions-folder"]
}
}