【问题标题】:How to use WeakRef in Typescript?如何在 Typescript 中使用 Wea​​kRef?
【发布时间】:2021-05-20 17:16:02
【问题描述】:

我想在 Typescript 中使用 Wea​​kRef。我尝试使用目前可用的最新版本(4.1.5)。 我有一个编译错误:

const toIdString = (o: Object): string =>
  o.constructor.name + JSON.stringify(o);

export class MemoCache {
  static handle<T>(o: T): T {
    const id = toIdString(o);
    const cached = MemoCache.map.get(id);
    if (cached) {
      return cached.deref() as T;
    }
    MemoCache.map.set(id, new WeakRef(o));
    return o;
  }

  static map = new Map<string, WeakRef>();
}

我有编译错误。


src/Memoizer.ts:11:31 - error TS2304: Cannot find name 'WeakRef'.

11     MemoCache.map.set(id, new WeakRef(o));
                                 ~~~~~~~

src/Memoizer.ts:15:32 - error TS2304: Cannot find name 'WeakRef'.

15   static map = new Map<string, WeakRef>();
                                  ~~~~~~~

但是,这是 ECMAScript 2021。Chrome 88 似乎可以理解它。 我有节点 15.8.0(最后一个) 你知道如何让 Typescript 理解 WeakRef 吗?

【问题讨论】:

标签: javascript node.js typescript ecmascript-next tc39


【解决方案1】:

2021 年 2 月 18 日,要在 Typsecript 中使用 WeakRef,您需要拥有并配置 tsconfig.json,方法是将 ESNext 添加到 lib 属性中。

{
  "compilerOptions": {
// ...
    "lib": ["ESNext"],
// ...
  },
// ...
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-08
    • 2020-01-30
    • 1970-01-01
    相关资源
    最近更新 更多