如果当前项目中不包含引用打字稿库的类型,请忽略

时间:2019-06-28 22:30:45

标签: typescript

在@ types / urijs中,存在引用HTMLElement

的类型。
new (value?: string | URIOptions | HTMLElement): URI;

如果我不想在HTMLElement中包含lib:dom,是否可以忽略tsconfig.json类型?

本地理想的类型是string | URIOptions

1 个答案:

答案 0 :(得分:2)

有人提议支持here中所述的占位符类型。不幸的是,它尚未实现

您需要创建一种前向声明接口,以满足该库中的类型:

declare global {
   interface HTMLElement {}
}

现在,这确实意味着您将拥有一个名为HTMLElement的全局空接口,这可能会导致其他问题,因为HTMLElement是空对象类型({}),其他任何类型的接口可分配给它。

另一种选择是将HTMLElement声明为never

declare global {
   type HTMLElement = never
}

尽管这将与为HTMLElement界面添加增强功能的模块不兼容。

一个不错的折衷办法是在接口中声明一个防护属性,以确保它与其他类型不兼容:

declare global {
   interface HTMLElement {
       guard: "DO NOT INSTANTIATE"
   }
}