TypeScript-属性装饰器

2023-09-29 22:36:08 浏览数 (1)

前言

TypeScript中的属性装饰器是一项有力的特性,允许开发者在类的属性上应用装饰器函数,以自定义属性的行为和元数据。这为开发者提供了更多的控制权和灵活性,以满足各种需求。

属性装饰器的主要应用之一是添加元数据。通过装饰器,您可以为属性附加信息,例如验证规则、默认值或其他自定义配置。这种元数据对于文档生成、类型检查和运行时行为非常有用。

另一个属性装饰器的常见用途是改变属性的访问行为。您可以使用装饰器来创建 getter 和 setter 方法,以实现对属性的更复杂的控制逻辑。这对于数据验证、权限控制和数据转换非常有帮助。

属性装饰器还广泛用于框架和库的开发中,以实现各种功能,例如数据绑定、序列化和反序列化,以及状态管理。

总之,TypeScript中的属性装饰器是一个强大的工具,可以帮助开发者增强属性的功能和可维护性,使代码更加灵活和可扩展。它为类型安全和高级特性提供了更多的可能性,使得 TypeScript 成为现代应用程序开发的首选语言之一。

属性装饰器概述

属性装饰器写在一个属性声明之前(紧靠着属性声明)

属性装饰器表达式会在运行时当作函数被调用,会自动传入下列 2 个参数:

  • 对于静态属性来说就是当前的类, 对于实例属性来说就是当前实例
  • 成员的名字

实例属性:

代码语言:typescript复制
function test(target: any, proptyName: string) {
    console.log(target);
    console.log(proptyName);
}

class Person {
    static age: number;
    @test
    name?: string;
}
image-20211206133816729image-20211206133816729

静态属性:

代码语言:typescript复制
function test(target: any, proptyName: string) {
    console.log(target);
    console.log(proptyName);
}

class Person {
    @test
    static age: number;
    name?: string;
}
image-20211206133839728image-20211206133839728

那么现在你就可以在属性装饰器当中做你想做的事情了比如说,我想在创建对象的时候给 name 属性初始化一个值如下:

代码语言:typescript复制
function test(target: any, proptyName: string) {
    target[proptyName] = "yangbuyiya";
}

class Person {
    static age: number;
    @test
    name?: string;
}

let p = new Person();
console.log(p);
image-20211206134133794image-20211206134133794

最后

本期结束咱们下次再见

0 人点赞