深入理解TypeScriptReflectMetadata

更新时间:2023-07-25 11:42:18 阅读: 评论:0

wifi网络拒绝接入怎么解决深⼊理解TypeScriptReflectMetadata
在定义类或者类⽅法的时候,可以设置⼀些元数据,我们可以获取到在类与类⽅法上添加的元数据,⽤的⽅法就是 Reflect Metadata。元数据指的是描述东西时⽤的数据。
在 TypeScript ⾥使⽤ Reflect Metadata 需要做下⾯这样的配置:
{
"compilerOptions": {
"experimentalDecorators": true ,
"emitDecoratorMetadata": true
},
九月一号}
兼容并包然后在项⽬⾥安装 reflect-metadata 这个包:
npm install reflect-metadata --save
谦虚的反义词是什么
血小板减少吃什么好
然后做个实验:
import 'reflect-metadata';
@adata('role', 'admin')
class Post {}
const metadata = Metadata('role', Post);
console.log(metadata); // admin
先导⼊ reflect-metadata 这个包,然后在定义的 Post 类的上⾯⽤ adata 装饰器添加了⼀条元数据,role 是这条元数据的名字,admin 是我们给这条数据设置的对应的值。
稍后如果想获取到在类上添加的这些元数据,可以使⽤ Metadata ⽅法,role 是元数据的名字,Post 是对应的类的名字。执⾏上⾯代码,会返回 admin 这个字符串。
⾃定义装饰器
在上⾯的例⼦⾥我们⽤了 adata 设置的元数据。我们也可以⾃定义⼀个装饰器去完成同样
企业简介模板
的事情。像下⾯这样:
import 'reflect-metadata';
function Role(name: string): ClassDecorator {
return target => {
Reflect.defineMetadata('role', name, target);
};
}
@Role('admin')
class Post {}
const metadata = Metadata('role', Post);
克制的反义词console.log(metadata);
Role 是⾃定义的⼀个装饰器,接收⼀个 name 参数,这是⼀个装饰器⼯⼚,返回的是 ClassDecorator。返回的东西应该是个适合在类上使⽤的装饰器,所以接收⼀个 target 参数,这个东西就是类的构造⽅法。在⽅法⾥⽤ Reflect.defineMetadata ⽅法设置了⼀个⾃定义的元数据叫 role,对应的值是 name,也就是使⽤这个装饰器的时候提供的参数值,第三个参数是 target,就是要添加元数据的那个类。
有了这个⾃定义的装饰器,使⽤它的时候可以像这样: @Role('admin'),功能就是在它装饰的类的上⾯添加了⼀条叫 role 的元数据,设置的对应的值是 admin。
以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。音乐之声音乐剧

本文发布于:2023-07-25 11:42:18,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1095997.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数据   装饰   东西
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图