Decorators
A decorator is a function that either returns void or returns another function that returns void, applied to either a type, property or method as expressions enclosed by square brackets. Decorators cannot be applied everywhere.
[D(x = 10)] is equivalent to [D({x: 10})].
Note that 4 lexical names may be reserved in some contexts. Jump to the Reserved Lexical Decorators section below for quick information.
Decorators Applied to Types
function MyTypeDecorator(type: Class): void {
}
[MyTypeDecorator]
class C {
}
Decorators Applied to Properties
function MyFieldDecorator(o: C, {name}: Binding): void {
trace(name);
}
class C {
[MyFieldDecorator]
public var x: Number;
}
Decorators Applied to Methods
function MyMethodDecorator(o: C, name: String): void {
trace(name);
}
class C {
[MyMethodDecorator]
public function f(): void {
}
}
Reserved Lexical Decorators
The following decorators are reserved, but can still be used if they do not directly appear as lexical references:
[Metadata()][Allow()][Warn()][FFI()]- When applied to a class definition,
[Value]is reserved - When applied to a class definition,
[DontInit]is reserved - When applied to an enum definition,
[Flags]is reserved
You can still use them if they are under a namespace or package, such as q.b.Metadata.