我正在创建一个与标准HTML5类具有相同名称的类,比如说WeakMap,我想在同一模块中使用原始的WeakMap实例。
示例我想如何实现:
const OriginalWeakMap = WeakMap; // doesn't work, it's alias to my class, probably due to hoisting
class WeakMap {
private bar: OriginalWeakMap
private foo: global.WeakMap; // global is not universally recognized in both browser and node environment
}
那么问题:如何以一种优雅的方式实现它-没有下面的解决方法?
...
我发现的唯一解决方法是创建单独的模块:
// BuilitinWeakMap.ts
export BuilitinWeakMap = WeakMap;
,然后再使用一个:
import { BuilitinWeakMap } from './BuilitinWeakMap';
export class WeakMap {
private bar: BuilitinWeakMap // works
}
我认为这是一个非常丑陋的解决方案(并且仍然不知道它是否在所有情况下都有效)。