首页 > 解决方案 > 打字稿装饰器参数

问题描述

我想了解 Typescript 装饰器的不同参数是什么。

function myDecorator(target) {
  // do something with 'target' ...
}

在上面的示例中,我知道 target 表示装饰器附加到的函数/类,但是装饰器的其他参数是什么,它们的含义是命令,我还想获得一个官方文档的链接来指定这个。

提前致谢。

标签: javascripttypescript

解决方案


装饰器需要一个参数,它装饰的目标和更多参数,具体取决于目标的类型,例如

方法装饰器

方法装饰器的表达式将在运行时作为函数调用,并带有以下三个参数:

  • 静态成员的类的构造函数,或者实例成员的类的原型。
  • 成员的姓名。
  • 成员的属性描述符。

您可以在TypeScript 装饰器上找到所有装饰器类型的完整列表:

  • 类装饰器

    • 仅目标类
  • 方法装饰器

    • 要么是静态成员的类的构造函数,要么是实例成员的类的原型,
    • 会员姓名,
    • 成员的属性描述符
  • 访问器装饰器

    • 静态成员的类的构造函数,或者实例成员的类的原型。
    • 成员的姓名。
    • 成员的属性描述符。
  • 物业装饰师

    • 静态成员的类的构造函数,或者实例成员的类的原型。
    • 成员的姓名。
  • 参数装饰器

    • 静态成员的类的构造函数,或者实例成员的类的原型。
    • 成员的姓名。
    • 函数参数列表中参数的序号索引。

此外:

如果我们想自定义如何将装饰器应用于声明,我们可以编写一个装饰器工厂。装饰器工厂只是一个函数,它返回将由装饰器在运行时调用的表达式。

[ TypeScript 装饰器]

您可以根据需要创建带有参数的装饰器工厂。它们不受限制或指定。

TypeScript 文档中的示例。

装饰师:

function sealed(target) {
  // do something with 'target' ...
}

适用于

@sealed x

装饰厂:

function color(value: string) {
  // this is the decorator factory
  return function (target) {
    // this is the decorator
    // do something with 'target' and 'value'...
  };
}

应用为

@color('blue') x

推荐阅读