Typescript:类的装饰器

这篇具有很好参考价值的文章主要介绍了Typescript:类的装饰器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Typescript的装饰器我在学习typescript的时候并不是很清楚它的作用场景,直到使用了nest.js框架后,才明白其作用,于是又深入学习了一下,希望通过对装饰器的学习提高对nest.js的使用。

装饰器

装饰器为我们在类的声明及成员上通过元编程语法添加标注提供了一种方式

装饰器是一种特殊类型的声明,它能够被附加到类声明,方法, 访问符,属性或参数上。

装饰器使用 @expression这种形式,expression求值后必须为一个函数,它会在运行时被调用,被装饰的声明信息做为参数传入

function setProp(){
  return function target(){
    
  }
}
@setProp()

装饰器求值

类中的装饰器的引用,参数装饰器、方法装饰器、访问符装饰器或者属性装饰器,应用到实例成员上

参数装饰器、方法装饰器、访问符装饰器、属性装饰器,应用到静态成员上

参数装饰器应用到构造函数上

类装饰器 应用到类上

类装饰器

类装饰器在类声明前声明,类修饰符应用于类的构造函数,可用于观察、修改或替换类定义。

类装饰器接收装饰类的构造函数作为唯一参数

如果类装饰器返回一个值,它将用提供的构造函数替换类声明。

function setName(name: string) {
    return (target: new () => any) => {
      sign = target;
    }
  }
  @setName('lison')
  class ClassDes {
    constructor() {

    }
  }

方法装饰器

方法修饰符在方法声明之前声明。修饰符应用于方法的属性描述符,可用于观察、修改或替换方法定义。

方法装饰器接收三个参数:

  1. 静态成员的类的构造函数或实例成员的类的原型
  2. 成员名称
  3. 成员的属性描述符

如果方法装饰器返回一个值,它将用作该方法的属性描述符。

function methodDecorator(target, propertyName,propertyDescriptor){
	
}
class Person {
	name:string;
	constructor(name:string){
		this.name = name;
	}
	@methodDecorator
	getName(){
		return this.name;
	}
}

访问者装饰器

在访问器声明之前声明。访问器修饰符应用于访问器的属性描述符,可用于观察、修改或替换访问器的定义。

访问者装饰器接收三个参数:

  1. 静态成员的类的构造函数或实例成员的类的原型
  2. 成员的名称
  3. 成员的属性描述符

如果访问者装饰器返回一个值,它将用作成员得属性描述符

function getterDecorator(target, propertyName,propertyDescriptor){
	
}
class Person {
	constructor(name:string){
		this.name = name;
	}
	@getterDecorator
	get name(){
		return this.name;
	}
}

属性装饰器

在属性声明之前声明。
属性装饰器接收两个参数:

  1. 静态成员的类的构造函数或实例成员的类原型。
  2. 成员的名称

属性装饰器的返回值会被忽略。

function getterDecorator(target, propertyName,){
	
}
class Person {
	@propertyDecorator
	name:string
	constructor(name:string){
		this.name = name;
	}
}

参数装饰器

在参数声明之前声明了参数装饰器。参数修饰符应用于类构造函数或方法声明的函数。

参数装饰器接收三个参数:

  1. 静态成员的类的构造函数或实例成员的类原型
  2. 成员的名称
  3. 函数参数列表中参数的序号索引

参数装饰器的返回值会被忽略。文章来源地址https://www.toymoban.com/news/detail-603990.html

function paramsDecorator(target, propertyName,index){
	
}
class Person {
	name:string
	constructor(name:string){
		this.name = name;
	}
	eat(@paramsDecorator food:string){
	
	}
}

装饰器的执行顺序

  1. 执行参数装饰器
  2. 执行方法和属性装饰器
  3. 执行类装饰器
    总的规律从内向外执行,先执行里面的装饰器,依次向外执行。

到了这里,关于Typescript:类的装饰器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【鸿蒙系统学习笔记】TypeScript开发语言

    HarmonyOS 应用的主要开发语言是 ArkTS,它由 TypeScript(简称TS)扩展而来,在继承TypeScript语法的基础上进行了一系列优化,使开发者能够以更简洁、更自然的方式开发应用。值得注意的是,TypeScript 本身也是由另一门语言 JavaScript 扩展而来。因此三者的关系如下图所示 2.1.1、线

    2024年02月19日
    浏览(43)
  • TypeScript快速入门 - 类的使用

    1、类的声明         :class 2、类的继承         :extends 3、类与接口         :implments 4、抽象类         :abstract 5、类的成员变量修饰符         公开的:public         私有的:private         受保护的:protected         只读的:re

    2024年01月21日
    浏览(45)
  • 【HarmonyOS北向开发】-03 ArkTS开发语言-TypeScript快速入门

     飞书原文链接:Docs

    2024年02月12日
    浏览(51)
  • 《四》TypeScript 中类的类型定义

    类可以作为其实例对象的类型。 类也可以被当做是一个构造函数。 在 TypeScript 中,类的属性必须要明确声明,否则会报错。 在 TypeScript 中,类的属性和方法支持三种修饰符。添加之后,TypeScript 将会检测该成员在哪些地方可见。 public:修饰的是在任何地方可见、公有的属性

    2024年02月09日
    浏览(38)
  • HarmonyOS第一课ArkTS开发语言(TypeScript快速入门)

    ArkTS是HarmonyOS优选的主力应用开发语言。它在TypeScript(简称TS)的基础上,匹配ArkUI框架,扩展了声明式UI、状态管理等相应的能力,让开发者以更简洁、更自然的方式开发跨端应用。要了解什么是ArkTS,我们首先要了解下ArkTS、TypeScript和JavaScript之间的关系: JavaScript是一种属

    2024年02月05日
    浏览(45)
  • typeScript中的类以及类的限制

    传统方法中,JavaScript通过构造函数实现类的概念,通过原型链实现继承。而在Es6中,我们终于迎来了class. typeScript除了实现了所有Es6中类的功能以外,还添加了一些新的用法。 虽然 JavaScript 中有类的概念,但是可能大多数 JavaScript 程序员并不是非常熟悉类,这里对类相关的概

    2024年02月05日
    浏览(38)
  • HarmonyOS(二)—— 初识ArkTS开发语言(上)之TypeScript入门

    Mozilla创造了JS,Microsoft创建了TS,而Huawei进一步推出了ArkTS。因此在学习使用ArkTS前,需要掌握基本的TS开发技能。 ArkTS是HarmonyOS优选的主力应用开发语言。它在TypeScript(简称TS)的基础上,匹配ArkUI框架,扩展了声明式UI、状态管理等相应的能力,让开发者以更简洁、更自然的

    2024年02月06日
    浏览(54)
  • 【TypeScript】中定义与使用 Class 类的解读理解

    类是用于创建对象的模板。他们用代码封装数据以处理该数据。JavaScript 中的类建立在原型上,但也具有某些语法和语义未与 ES5 类相似语义共享。 TypeScript 除了实现了所有 ES6 中的类的功能以外,还添加了一些新的用法。 关于 ES6的 Class 类语法概念 ,在本章节不做过多阐述,

    2024年02月14日
    浏览(41)
  • 面试题-TS(八):什么是装饰器(decorators)?如何在 TypeScript 中使用它们?

    面试题-TS(八):什么是装饰器(decorators)?如何在 TypeScript 中使用它们? 在TypeScript中,装饰器( Decorators )是一种用于增强代码功能的特殊类型声明。装饰器提供了一种在类、方法、属性等代码元素上注释或修改的方式,使得我们可以通过装饰器来扩展、修改或监视代码的

    2024年02月15日
    浏览(62)
  • 深入理解ArkTS:Harmony OS 应用开发语言 TypeScript 的基础语法和关键特性

    Harmony OS应用开发的主力语言ArkTS的前身TS语言的基本语法。通过学习变量的声明和数据类型、条件控制、函数声明、循环迭代等基本知识,并了解内核接口的声明和使用。同时还介绍了模块化开发的概念,提高代码的复用性和开发效率。该对话还涉及了if else和switch条件控制语

    2024年02月04日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包