Est*_*ask 5 typescript typescript-typings typescript-lib-dom
TypeScript 内置 DOM 库中的几种类型需要在本地模块中使用以实现跨平台代码片段,例如:
// foo.ts
export let foo: EventListener = (e) => ...;
Run Code Online (Sandbox Code Playgroud)
这可以通过添加以下内容来实现:
/// <reference lib="dom" />
Run Code Online (Sandbox Code Playgroud)
问题是该项目中的其他模块受到 DOM 相关类型的污染,而它们并非特定于浏览器或 DOM。
// bar.ts
class Animation {
...
}
Run Code Online (Sandbox Code Playgroud)
这会导致任何可能与浏览器全局变量同名的变量出现名称冲突错误,例如:
重复标识符“...”.ts(2300)
lib.dom.d.ts: '...' 也在这里声明。
以下标识符的定义与其他文件中的标识符冲突:... ts(6200)
lib.dom.d.ts:此文件中存在冲突。
无法重新声明块作用域变量“...”.ts(2451)
lib.dom.d.ts: '...' 也在这里声明。
如果可能的话,我希望避免粘贴类似EventListener
lib.dom.d.ts 的类型层次结构。
如何在一个本地模块中使用内置库中的类型而不影响其他模块?
正如堆栈溢出和TypeScript 的 GitHub上的回答,这在单个 TypeScript 项目中是不可能的,这是设计使然。
但作为一种解决方法,您可以为应该有权访问dom
类型的模块和不能访问类型的模块创建单独的 TypeScript 项目。
归档时间: |
|
查看次数: |
1752 次 |
最近记录: |