我读过这个答案关于如何扩展内置类型的文章,但它只讲述了一半的故事。我们如何告诉TypeScript在哪里找到我们的全局定义?
我创建了一个文件,
src/cssom.d.ts
interface HTMLElement {
computedStyleMap(): any
}然后尝试将其包含在include中(不确定这是否是最好的选择):
tsconfig.json
{
"compilerOptions": {
...
},
"files": [
"src/index"
],
"include": [
"src/**/*.d.ts"
],
"exclude": [
"node_modules"
]
}但是我的VS代码仍然抱怨:

即使它通过太棒了-打字稿-装载机编译而没有错误或警告。
那么,我要做什么才能让语言服务表现出来呢?配置tsconfig以读取所有*.d.ts文件的最佳方法是什么?
添加
///<reference path="cssom.d.ts"/>文件的顶部满足编译器和语言服务,但我真的不想在任何地方添加这些<reference>,因为我是在扩展内置/全局类型。
发布于 2018-08-23 22:13:28
我认为屏幕截图中显示的tsx文件不是tsconfig.json定义的项目的一部分,因为它既没有被files引用,也没有被匹配includes的文件引用。您的"files"可能应该改为["src/index.tsx"];我进行了测试,而扩展确实起到了作用。
发布于 2018-08-23 21:42:51
我认为您需要"typeRoots" tsconfig编译器选项。我认为您可以通过在typeRoots数组中包含您的文件来解决这个问题。
"typeRoots": [
"src/cssom.d.ts"
]或者,您可以简单地在typeRoots数组中包含一个文件夹的路径,以包含该文件夹中的所有类型。
更新:
顺便说一句,我只知道这一点,因为typescript-starter项目会自动为您配置默认的typeRoots文件夹,并解释如何使用它。非常有帮助。
更新2:
我认为值得注意的是,类型记录文档特别指出,typeRoots选项应该包括文件夹路径列表,因此可能指向特定的*.d.ts文件不起作用。
更新3:
正如@mpen所指出的,包括您自己的typeRoots将覆盖默认的node_modules/@types typeRoot。因此,您也需要特别包括该typeRoot:
即"typeRoots": ["node_modules/@types", "src/types"]
https://stackoverflow.com/questions/51994617
复制相似问题