TypeScript-装饰器

简介: TypeScript-装饰器

装饰器概述


DecoratorES7 的一个新语法,目前仍处于 提案中装饰器是一种特殊类型的声明,它能够被附加到类,方法, 访问器,属性或参数上

被添加到不同地方的装饰器有不同的名称和特点:


  • 附加到类上, 类装饰器
  • 附加到方法上, 方法装饰器
  • 附加到访问器上, 访问器装饰器
  • 附加到属性上, 属性装饰器
  • 附加到参数上, 参数装饰器




装饰器基本格式


普通装饰器

function test(target) {
    console.log('test');
}
@test
class Person {
}

如上代码的含义为给 Person 这个类绑定了一个 普通的装饰器,这个装饰器的代码会在定义类之前执行, 并且在执行的时候会把这个类传递给装饰器,除了如上的步骤还是不行的编译器还是会报错,还需要开启 experimentalDecorators 修改 tsconfig.json:

"experimentalDecorators": true,



装饰器工厂

如果一个函数返回一个回调函数, 如果这个函数作为装饰器来使用, 那么这个函数就是 装饰器工厂

function test(target) {
    console.log('test');
}
function demo() {
    console.log('demo out');
    return (target) => {
        console.log('demo in');
    }
}
@demo()
class Person {
}

如上代码的含义为给 Person 这个类绑定了一个 装饰器工厂,在绑定的时候由于在函数后面写上了 (), 所以会先执行装饰器工厂拿到真正的装饰器, 真正的装饰器会在定义类之前执行, 所以紧接着又执行了里面。




装饰器组合


普通的装饰器可以和装饰器工厂结合起来一起使用

结合起来一起使用的时候, 会先 从上至下 的执行所有的装饰器工厂, 拿到所有真正的装饰器, 然后再 从下至上 的执行所有的装饰器:

function test(target) {
    console.log('test');
}
function demo() {
    console.log('demo out');
    return (target) => {
        console.log('demo in');
    }
}
function abc(target) {
    console.log('abc');
}
function def() {
    console.log('def out');
    return (target) => {
        console.log('def in');
    }
}
@test
@demo()
@def()
@abc
class Person {
}


最后

本期结束咱们下次再见👋~

🌊 关注我不迷路,如果本篇文章对你有所帮助,或者你有什么疑问,欢迎在评论区留言,我一般看到都会回复的。大家点赞支持一下哟~ 💗

相关文章
|
5天前
|
JavaScript 前端开发 数据安全/隐私保护
TypeScript中装饰器的概念与使用场景
【4月更文挑战第23天】TypeScript的装饰器是特殊声明,用于附加到类的声明、方法、属性或参数,以修改行为。它们以`@expression`形式,其中`expression`是运行时调用的函数。装饰器应用场景包括:日志记录、调试、依赖注入、权限控制和AOP。通过装饰器,可以实现动态行为修改,如添加日志、注入依赖、控制权限以及事务管理。然而,应谨慎使用,避免过度复杂化代码。装饰器在现代 TypeScript 开发中扮演重要角色,帮助编写更健壮、可维护的代码。
|
4月前
|
存储 JavaScript 前端开发
TypeScript 5.2 beta 浅析:新的关键字 using 与新版装饰器元数据
TypeScript 5.2 beta 浅析:新的关键字 using 与新版装饰器元数据
|
6月前
|
JavaScript 安全 数据安全/隐私保护
TypeScript-属性装饰器
TypeScript-属性装饰器
29 0
|
6月前
TypeScript-方法装饰器
TypeScript-方法装饰器
20 0
|
1月前
react+typescript装饰器写法报错的解决办法
react+typescript装饰器写法报错的解决办法
23 1
|
3月前
|
存储 JavaScript 前端开发
TypeScript笔记(15)—— 深入理解TypeScript中的装饰器
TypeScript笔记(15)—— 深入理解TypeScript中的装饰器
54 0
|
3月前
|
JavaScript
如何使用 TypeScript 创建和使用装饰器
如何使用 TypeScript 创建和使用装饰器
17 0
|
3月前
|
JavaScript 前端开发 数据安全/隐私保护
TypeScript进阶(二)深入理解装饰器
TypeScript 是一种由微软开发的开源编程语言,它是 JavaScript 的超集,为 JavaScript 添加了静态类型检查和其他一些特性。装饰器是 TypeScript 中一个非常强大的特性,它可以用来修改类、方法、属性等的行为。本文将深入探讨 TypeScript 装饰器的原理和用法。
42 0
|
6月前
|
JavaScript 前端开发
带你读《现代TypeScript高级教程》十五、装饰器与反射元数据(1)
带你读《现代TypeScript高级教程》十五、装饰器与反射元数据(1)
|
6月前
|
JavaScript API
带你读《现代TypeScript高级教程》十五、装饰器与反射元数据(2)
带你读《现代TypeScript高级教程》十五、装饰器与反射元数据(2)