jlg*_*ego 11 weak-references typescript
我想在 Typescript 中使用 WeakRef。我尝试使用目前可用的最后一个版本(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>();
}
Run Code Online (Sandbox Code Playgroud)
我有编译错误。
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>();
~~~~~~~
Run Code Online (Sandbox Code Playgroud)
然而,这是 ECMAScript 2021。Chrome 88 似乎能理解它。我有节点 15.8.0 (最后一个)你知道如何让 Typescript 理解 WeakRef 吗?
jlg*_*ego 13
2021年2月18日,为了WeakRef
在Typsecript中使用,您需要tsconfig.json
通过添加ESNext
属性来进行配置lib
。
{
"compilerOptions": {
// ...
"lib": ["ESNext"],
// ...
},
// ...
}
Run Code Online (Sandbox Code Playgroud)
小智 9
更细致的选项是显式包含ES2021.WeakRef
在tsconfig.json
lib
.
{
"compilerOptions": {
"lib": ["ES2020", "ES2021.WeakRef"],
// ...
},
// ...
}
Run Code Online (Sandbox Code Playgroud)
笔记:
ES2020
是 Node 14 的 lib 设置。ES2021
是 Node 16 的 lib 设置。ES2022
是 Node 18 的 lib 设置。请参阅:tsconfig/bases:托管 TSConfig 以在 TypeScript 应用程序中扩展,并调整到特定的运行时环境
归档时间: |
|
查看次数: |
4537 次 |
最近记录: |