【发布时间】:2020-10-12 20:32:12
【问题描述】:
TypeScript 内置 DOM 库中的几种类型需要在本地模块中用于跨平台代码片段,例如:
// foo.ts
export let foo: EventListener = (e) => ...;
这可以通过添加:
/// <reference lib="dom" />
问题是该项目中的其他模块被 DOM 相关类型污染,而它们并非特定于浏览器或 DOM。
// bar.ts
class Animation {
...
}
这会导致任何可能与浏览器全局变量同名的变量出现名称冲突错误,例如:
重复标识符'...'.ts(2300)
lib.dom.d.ts: '...' 也在这里声明。
以下标识符的定义与另一个文件中的标识符冲突:... ts(6200)
lib.dom.d.ts:此文件中存在冲突。
无法重新声明块范围的变量 '...'.ts(2451)
lib.dom.d.ts: '...' 也在这里声明。
如果可能的话,我宁愿避免从 lib.dom.d.ts 粘贴像 EventListener 这样的类型层次结构。
如何在一个本地模块中使用内置库中的类型而不影响其他模块?
【问题讨论】:
-
我也有同样的问题。真的想有一种方法来导入具有正常模块语义的运行时类型,例如。
import * as dom from "dom".
标签: typescript typescript-typings typescript-lib-dom