decorators
esri/core/accessorSupport/decoratorsThis module contains Accessor TypeScript decorators. Decorators allow us to define and/or modify behavior of existing properties, methods, and constructors at design time.
Method Overview
| Name | Return Type | Summary | Object | |
|---|---|---|---|---|
| Function | A property decorator that creates a two-way binding between the property it decorates and an inner property of one of its members.more details | more details | decorators | |
| Function | This parameter decorator is used to define the function or class for a parameter of a method.more details | more details | decorators | |
| Function | This method decorator is used to define the method that will cast a property from a class.more details | more details | decorators | |
| * | A function that can be used as a class.more details | more details | decorators | |
| Function | This convenience decorator is used to define an Accessor property.more details | more details | decorators | |
| Function | A class decorator that must be used together with the  | more details | decorators | 
Method Details
- aliasOf(propertyName){Function}
- A property decorator that creates a two-way binding between the property it decorates and an inner property of one of its members. Parameter:propertyName String- The aliased property name. Returns:- Type - Description - Function - The property decorator. Examples:- // property example @aliasOf("viewModel.name") name: string = "name";- // method example @aliasOf("viewModel.someMethod") someMethod: () => string;
- cast(classFunction){Function}
- This parameter decorator is used to define the function or class for a parameter of a method. Parameter:classFunction Function- The function or class to cast the parameter Returns:- Type - Description - Function - The method descriptor. - See also:
 Example:- /// <amd-dependency path="esri/core/tsSupport/declareExtendsHelper" name="__extends" /> /// <amd-dependency path="esri/core/tsSupport/decorateHelper" name="__decorate" /> import Accessor = require("esri/core/Accessor"); import { subclass, property, declared } from "esri/core/tsSupport/declare"; @subclass() class QueryTask extends declared(Accessor) { execute(@cast(Query) query: Query): IPromise<FeatureSet> { return ...; } }
- cast(propertyName){Function}
- This method decorator is used to define the method that will cast a property from a class. Parameter:propertyName String- The property name the function will cast. Returns:- Type - Description - Function - The method descriptor. - See also:
 Example:- /// <amd-dependency path="esri/core/tsSupport/declareExtendsHelper" name="__extends" /> /// <amd-dependency path="esri/core/tsSupport/decorateHelper" name="__decorate" /> import Accessor = require("esri/core/Accessor"); import { subclass, property, declared, cast } from "esri/core/tsSupport/declare"; @subclass() class Color extends declared(Accessor) { @property() r: number = 0; @property() g: number = 0; @property() b: number = 0; @property() a: number = 1; @cast("r") @cast("g") @cast("b") protected castComponent(value) { // cast method that clamp the value that // will be set on r, g or b between 0 and 255 return Math.max(0, Math.min(255, value)); } @cast("a") protected castAlpha(value) { // cast method that clamp the value that // will be set on a between 0 and 255 return Math.max(0, Math.min(1, value)); } }
- declared(baseClass, mixinClasses){*}
- A function that can be used as a class. It extends expression and is used in conjunction with the - @subclassdecorator to create a class compatible to dojo.declare. Please refer to the- subclassdocumentation for further information.Parameters:baseClass- The class to extend. mixinClasses Objectrepeatable- The mixin classes used to extend the base class. Returns:- Type - Description - * - The first baseClass. Example:- // typescript syntax which creates a subclass that extends the Accessor class. @subclass("my.custom.class") class MyCustomClass extends declared(Accessor) { // ... }
- property(propertyMetadata){Function}
- This convenience decorator is used to define an Accessor property. Any property defined with this decorator can now be - getand- set. In addition, you can watch for any property changes. Many times this decorator is used in conjunction with the @renderable decorator.Parameters:propertyMetadata Objectoptional- An object describing the property. Specification:dependsOn String[]optional- Property names of dependencies. type Functionoptional- The constructor used to autocast the property. cast Functionoptional- The function to use to autocast the property. Alternative to define the - type. The function is called with the value set by the user and should return the cast value.readOnly BooleanoptionalDefault Value: false- Indicates whether the property is read-only. constructOnly BooleanoptionalDefault Value: false- Indicates whether the property can be set during construction but is otherwise read-only. aliasOf Stringoptional- The property decorator that creates a two-way binding between the property it decorates and an inner property of one of its members. value Objectoptional- The default value for the property. Returns:- Type - Description - Function - The property descriptor. - See also:
 Example:- // typescript syntax to specify the property. @property() title: string = "Awesome Title!"
- subclass(declaredClass){Function}
- A class decorator that must be used together with the - declaredfunction to create a class compatible to dojo.declare. It supports both single and multiple inheritance and can be considered the underlying functionality needed when creating 4.x classes.Parameter:declaredClass Stringoptional- The subclass name. Returns:- Type - Description - Function - The class decorator. Examples:- // Single inheritance - typescript syntax which creates a subclass that extends the Accessor class. @subclass("my.custom.class") class MyCustomClass extends declared(Accessor) { // ... }- // Multiple inheritance - typescript syntax which creates a subclass that extends multiple classes // Use declaration merging to add mixins to the SceneLayer type interface SceneLayer extends SceneService { } // provide a fully qualified namespace for the resulting subclass @subclass("esri.layers.SceneLayer") class SceneLayer extends declared(Layer, SceneService) { // do something }