TypeScript Decorators 的使用说明

TypeScript Decorators


随着 TypeScript 和 ES6 中 Classes 的引入,现在存在一些需要额外功能来支持注释或修改类和类成员的场景。 装饰器提供了一种为类声明和成员添加注释和元编程语法的方法。装饰器是 JavaScript 的第 2 阶段提案,可作为 TypeScript 的实验性功能使用。


要启用对装饰器的实验性支持,您必须在命令行或 tsconfig.json 中启用 ExperimentDecorators 编译器选项:


tsc --target ES5 --experimentalDecorators


tsconfig.json:

TypeScript Decorators 的使用说明

装饰器是一种特殊的声明,可以附加到类声明、方法、访问器、属性或参数。装饰器使用@expression 形式,其中表达式必须计算为一个函数,该函数将在运行时调用,并带有有关装饰声明的信息。

例如,给定装饰器@sealed,我们可以编写如下的sealed 函数:

function sealed(target) {

 // do something with 'target' ...

}

Decorator Factories

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

我们可以用以下方式编写一个装饰工厂:

function color(value: string) {

 // this is the decorator factory, it sets up

 // the returned decorator function

 return function (target) {

   // this is the decorator

   // do something with 'target' and 'value'...

 };

}

当多个装饰器应用于单个声明时,它们的评估类似于数学中的函数组合。 在这个模型中,当组合函数 f 和 g 时,得到的复合 (f ∘ g)(x) 等价于 f(g(x))。


因此,在 TypeScript 中对单个声明评估多个装饰器时,将执行以下步骤:


每个装饰器的表达式都是从上到下计算的。

然后将结果作为函数从下到上调用。

一个例子:

TypeScript Decorators 的使用说明

上一篇:便捷的方式在手机上查看Unity3D的Console Log(调试信息)


下一篇:ESC初次使用心得