Metadata Proposal
Metadata Proposal用于在类或类属性/方法上添加或读取元数据,简单来说,通过它可以获取方法的参数数据类型、返回值类型,向属性或方法本身添加额外的数据且不影响原本的代码。目前Metadata Proposal仍未被正式支持,但TypeScript已经作为实验性质支持了它。
TypeScript Reflect Metadata
要在TS中使用Metadata,需要在tsconfig.json
中开启两个选项
同时需要安装
1npm install reflect-metadata
这样就能在项目中使用Metadata了。
首先来看看如何向类添加并读取Metadata。
1import "reflect-metadata";
2
3@Reflect.metadata("sex", "male")
4class People {
5}
6
7console.log(Reflect.getMetadata("sex", People)); // male
可以看到我们为People
添加了元数据sex
,其值为male
,之后就可以通过Reflect.getMetadata
API获取到添加在People
类上的sex
元数据值。
与之功能类似的API还有:
- Reflect.hasMetadata
- Reflect.hasOwnMetadata
- Reflect.getOwnMetadata
- Reflect.getMetadataKeys
- Reflect.deleteMetadata
具体如何使用可以查看Metadata Proposal,总的来说就是对metadata进行增删改查。