如何使VScode识别d.ts文件而不直接引用它们

时间:2018-10-10 19:15:16

标签: typescript visual-studio-code

我有一个用create-react-app-ts创建的项目

我还有一组d.ts文件,它们是从JSON模式生成的接口。他们为远程API定义了一些接口。

我希望这些d.ts文件在整个项目中都是“全局”可用的,而不需要通过文件名直接引用它们。类似于Promise<T>定义在全球范围内可用。

我尝试修改tsconfig,并将path/to/**/*.dts添加到include以及files中。我还尝试将路径添加到"typeRoots"下的compilerOptopns

这使项目可以编译,但是VSCode没有为这些接口提供IntelliSense,并强调它们为未知。

2 个答案:

答案 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描述了ActionLinktypeRoots@types之间的区别。

对于您的具体情况,此typeRoots文件应该可以解决问题:

types

如果您还使用npm中的类型定义,则还应该添加tsconfig.json

{
    "compilerOptions": {
        "typeRoots" : ["./type-definitions-folder"]
    }
}