打字稿装饰器参数

时间:2021-02-27 11:06:41

标签: javascript typescript

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

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

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

提前致谢。

1 个答案:

答案 0 :(得分:1)

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

<块引用>

方法装饰器

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

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

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

  • 类装饰器

    • 仅目标类
  • 方法装饰器

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

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

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

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

另外:

<块引用>

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

[TypeScript Decorators]

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

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