如何以一种优雅的方式在Typescript中为全局对象起别名

时间:2018-07-13 06:39:12

标签: typescript

我正在创建一个与标准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
}

我认为这是一个非常丑陋的解决方案(并且仍然不知道它是否在所有情况下都有效)。

0 个答案:

没有答案