首页 > 其他分享 >TS - 装饰器与注解

TS - 装饰器与注解

时间:2024-12-01 16:22:41浏览次数:10  
标签:function return target const TS 注解 装饰 string

Typescript装饰器模式,可以有效的提高开发效率,就像Java中使用注解一样,装饰器让TypeScript的世界更友好。 我们使用的许多库都基于这一强大特性构建, 例如AngularNestjs。 在这文章中我将介绍装饰器和它的许多细节。 我希望在读完这篇文章后,你可以掌握何时和如何使用这一强大的特性

你可能在前端项目中很少见过注解形式,这是有一定原因的,一方面可能就是见得少,另一个读完文章你就会明白

文章首发公众号,扫码关注获取更多优质内容
image

概念

装饰器本身就是一种特殊的函数,被用于类的各个属性(类本身、类属性、类方法、类访问器、类方法的参数),装饰器就像高阶函数一样,对目标做了一层中间操作,可以很简洁的无痛修改一些功能和做一些有趣的功能

一个小例子:

// 日志打印(只做代码演示,运行时机有出入)
function logger(key: string): any {
  return function () {
    console.log("call: ", key);
  };
}

class HTTP {
  @logger("get")
  static get(url?: string) {
    return url;
  }
}
HTTP.get();  // 打印 call: get

上面简单的演示了调用get方法时打印logger的功能,只需要在指定的属性前方加上@logger即可,对原有的业务功能0侵入,这就是装饰器的强大,如果以传统的方式必然会在get内部写一些逻辑

标签:function,return,target,const,TS,注解,装饰,string
From: https://www.cnblogs.com/98kk/p/18579867

相关文章

  • 插入式注解处理器
    实战:插入式注解处理器目标:检查是否符合驼式命名法详细描述查看【深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)】10.4实战:插入式注解处理器(510页)1.代码部分1.注解处理器NameCheckProcessorpackageorg.anno;importjavax.annotation.processing.*;importjavax.lang.mo......
  • spring的注解开发-事务@transactional的使用
    新建maven项目pom<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http......
  • ECharts柱状图-极坐标系下的堆叠柱状图2,附视频讲解与代码下载
    引言: 在数据可视化的世界里,ECharts凭借其丰富的图表类型和强大的配置能力,成为了众多开发者的首选。今天,我将带大家一起实现一个柱状图图表,通过该图表我们可以直观地展示和分析数据。此外,我还将提供详细的视频讲解和代码下载链接,帮助大家快速上手。一、图表效果预览二、视......
  • RHEL9.4安装nfts驱动
    日期:2024.11.30目的:安装nfts系统,实现U盘和移动硬盘与主机互传文件打算3个U盘之间整理下数据,先创建3个挂载点[root@RHEL9~]#mkdir/mnt/mnt{1,2,3}[root@RHEL9~]#ls/mnt/mnt1mnt2mnt3插上U盘看下设备[root@RHEL9~]#manlsblkNAMElsblk-listblockde......
  • 最新CobaltStrike4.9.1中文版/汉化版下载+免杀生成过360杀毒、微步沙箱等
    工具介绍  CS是CobaltStrike的简称,是一款渗透测试神器,常被业界人称为CS神器。CobaltStrike已经不再使用MSF而是作为单独的平台使用,它分为客户端与服务端,服务端是一个,客户端可以有多个,可被团队进行分布式协团操作。  CobaltStrike集成了端口转发、扫描多模式端口Liste......
  • LCR 151.彩灯装饰记录III
    题目代码classSolution{publicList<List>levelOrder(TreeNoderoot){if(root==null){returnnewArrayList<>();}Queue<TreeNode>queue=newLinkedList<>();List<List<Integer>>res=newArrayList<>();......
  • 力扣--LCR 149.彩灯装饰记录I
    题目代码/**Definitionforabinarytreenode.publicclassTreeNode{intval;TreeNodeleft;TreeNoderight;TreeNode(){}TreeNode(intval){this.val=val;}TreeNode(intval,TreeNodeleft,TreeNoderight){this.val=val;......
  • 从 @Import 注解到自动配置
    推荐阅读:Spring@Import注解用法、SpringBootStarter是什么@Import注解用于把实例加入SpringIOC容器中。打开@SpringBootApplication注解(SpringBoot2.6.13为例),会发现其被@EnableAutoConfiguration标注:@Target(ElementType.TYPE)@Retention(RetentionPolicy.R......
  • AI开发平台ModelArts-基本配置-在ECS中创建ma-user和ma-group
    在ModelArts训练平台使用的自定义镜像时,默认用户为ma-user、默认用户组为ma-group。如果在训练时调用ECS中的文件,需要修改文件权限改为ma-user可读,否则会出现Permissiondenied错误,因此需要在ECS中提前创建好ma-user和ma-group。在terminal中执行以下命令:default_user=$(gete......
  • AI开发平台ModelArts-run.sh脚本测试ModelArts训练整体流程
    自定义容器在ModelArts上训练和本地训练的区别如下图:图1本地与ModelArts上训练对比ModelArts上进行训练比本地训练多了一步OBS和容器环境的数据迁移工作。增加了和OBS交互工作的整个训练流程如下:说明:建议使用OBSutil作为和OBS交互的工具,如何在本机安装obsutil可以参考ob......