decorators
esri/core/accessorSupport/decorators
This 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 StringThe 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 FunctionThe 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 StringThe 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
@subclass
decorator to create a class compatible to dojo.declare. Please refer to thesubclass
documentation for further information.Parameters:baseClassThe class to extend.
mixinClasses ObjectrepeatableThe 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
get
andset
. In addition, you can watch for any property changes. Many times this decorator is used in conjunction with the @renderable decorator.Parameters:propertyMetadata ObjectoptionalAn object describing the property.
Specification:dependsOn String[]optionalProperty names of dependencies.
type FunctionoptionalThe constructor used to autocast the property.
cast FunctionoptionalThe 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: falseIndicates whether the property is read-only.
constructOnly BooleanoptionalDefault Value: falseIndicates whether the property can be set during construction but is otherwise read-only.
aliasOf StringoptionalThe property decorator that creates a two-way binding between the property it decorates and an inner property of one of its members.
value ObjectoptionalThe 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
declared
function 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 StringoptionalThe 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 }