gpt4 book ai didi

typescript - 如何让 TypeScript 语言服务不提示全局类型?

转载 作者:搜寻专家 更新时间:2023-10-30 21:21:54 26 4
gpt4 key购买 nike

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

我已经创建了一个文件,

src/cssom.d.ts

interface HTMLElement {
computedStyleMap(): any
}

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

tsconfig.json

{
"compilerOptions": {
...
},
"files": [
"src/index"
],
"include": [
"src/**/*.d.ts"
],
"exclude": [
"node_modules"
]
}

但我的 VS Code 仍然报错:

enter image description here

即使通过 awesome-typescript-loader 编译时没有错误或警告.

那么我需要做什么才能使语言服务正常运行?配置 tsconfig 以读取我所有的 *.d.ts 的最佳方法是什么?文件?


添加

///<reference path="cssom.d.ts"/>

文件的顶部同时满足编译器和语言服务,但我真的不想添加这些 <reference>它无处不在,因为我正在扩展一个内置/全局类型。

最佳答案

我想你想要 "typeRoots" tsconfig 编译器选项。我认为你可以通过将你的文件包含在 typeRoots 数组

中来解决这个问题
"typeRoots": [
"src/cssom.d.ts"
]

或者您可以简单地在 typeRoots 数组中包含一个文件夹的路径,以包含该文件夹中的所有类型。

更新:

顺便说一句,我只知道这个是因为 typescript-starter项目会自动为您配置一个默认的 typeRoots 文件夹,并说明如何使用它。很有帮助。

更新 2:

我想值得注意的是 typescript 文档特别指出 typeRoots 选项应该包含文件夹路径列表,因此它可能指向特定的 *.d.ts 文件无法工作。

更新 3:

正如@mpen 所指出的,包括您自己的typeRoots 将覆盖默认的node_modules/@types typeRoot。因此,您还需要特别包含该 typeRoot:

"typeRoots": ["node_modules/@types", "src/types"]

关于typescript - 如何让 TypeScript 语言服务不提示全局类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51994617/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com