首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使TypeScript语言服务不抱怨全局类型?

如何使TypeScript语言服务不抱怨全局类型?
EN

Stack Overflow用户
提问于 2018-08-23 21:37:23
回答 2查看 771关注 0票数 2

我读过这个答案关于如何扩展内置类型的文章,但它只讲述了一半的故事。我们如何告诉TypeScript在哪里找到我们的全局定义?

我创建了一个文件,

src/cssom.d.ts

代码语言:javascript
复制
interface HTMLElement {
    computedStyleMap(): any
}

然后尝试将其包含在include中(不确定这是否是最好的选择):

tsconfig.json

代码语言:javascript
复制
{
    "compilerOptions": {
        ...
    },
    "files": [
        "src/index"
    ],
    "include": [
        "src/**/*.d.ts"
    ],
    "exclude": [
        "node_modules"
    ]
}

但是我的VS代码仍然抱怨:

即使它通过太棒了-打字稿-装载机编译而没有错误或警告。

那么,我要做什么才能让语言服务表现出来呢?配置tsconfig以读取所有*.d.ts文件的最佳方法是什么?

添加

代码语言:javascript
复制
///<reference path="cssom.d.ts"/>

文件的顶部满足编译器和语言服务,但我真的不想在任何地方添加这些<reference>,因为我是在扩展内置/全局类型。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-23 22:13:28

我认为屏幕截图中显示的tsx文件不是tsconfig.json定义的项目的一部分,因为它既没有被files引用,也没有被匹配includes的文件引用。您的"files"可能应该改为["src/index.tsx"];我进行了测试,而扩展确实起到了作用。

票数 2
EN

Stack Overflow用户

发布于 2018-08-23 21:42:51

我认为您需要"typeRoots" tsconfig编译器选项。我认为您可以通过在typeRoots数组中包含您的文件来解决这个问题。

代码语言:javascript
复制
"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"]

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51994617

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档