ts WeakMap
时间: 2024-02-06 15:03:08 浏览: 70
WeakMap是JavaScript中的一种数据结构,它是一种特殊类型的Map,用于存储键值对。与普通的Map不同,WeakMap的键只能是对象,而值可以是任意类型的数据。WeakMap中的键是弱引用的,这意味着如果键对象没有被其他地方引用,它将被垃圾回收机制自动回收。
在TypeScript中,可以使用WeakMap来存储元数据。元数据是关于对象或属性的附加信息,可以用来描述对象或属性的特性、行为或其他相关信息。Reflect-metadata库使用WeakMap来存储元数据。
以下是使用WeakMap存储和删除元数据的示例代码:
1. 存储元数据:
```typescript
import "reflect-metadata";
const metadataKey = "myMetadata";
const target = {};
const metadataMap = new WeakMap();
metadataMap.set(target, "metadataValue");
Reflect.defineMetadata(metadataKey, metadataMap, target);
```
2. 删除元数据:
```typescript
import "reflect-metadata";
const metadataKey = "myMetadata";
const target = {};
const metadataMap = Reflect.getMetadata(metadataKey, target);
metadataMap.delete(target);
const result = Reflect.deleteMetadata(metadataKey, target);
console.log(result); // 输出:true
```
请注意,要使用Reflect-metadata库,需要先安装并导入它。
阅读全文