decorators

‎此模块包含访问器‎‎‎‎类型脚本修饰器。装饰器允许我们在设计时定义和/或修改现有属性、方法和构造函数的行为。‎

方法概述

  • aliasOf():‎在它修饰的属性与其成员之一的内部属性之间创建双向绑定的属性修饰器。‎
  • cast():此方法修饰器用于定义将从类中强制转换属性的方法。
  • cast():此属性修饰器用于定义属性的函数或类。
  • declared():‎可用作类的函数。‎
  • property():此方便修饰器用于定义Accessor‎‎‎‎属性。‎
  • subclass():装饰器。

方法详情

  • aliasOf(propertyName):在它修饰的属性与其成员之一的内部属性之间创建双向绑定的属性修饰器。参数
    • propertyName :别名属性名称。‎

@aliasOf("viewModel.name")
name: string = "name";
@aliasOf("viewModel.someMethod")
someMethod: () => string;
  • cast(propertyName):此方法修饰器用于定义将从类中强制转换属性的方法。‎参数
    • propertyName:函数将强制转换的属性名称。‎

import Accessor = require("esri/core/Accessor");
import { subclass, property, cast } from "esri/core/tsSupport/declare";

@subclass()
class Color extends 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) {
    return Math.max(0, Math.min(255, value));
  }

  @cast("a")
  protected castAlpha(value) {
    return Math.max(0, Math.min(1, value));
  }
}
  • cast(functionOrClass):‎此属性修饰器用于定义属性的函数或类。‎参数
    • functionOrClass :要强制转换属性的函数或类‎。

import Accessor = require("esri/core/Accessor");
import { subclass, property, cast } from "esri/core/tsSupport/declare";

function clampRGB(component: number) {
  return Math.min(Math.max(component, 0), 255);
}

function clampAlpha(alpha: number) {
  return Math.min(Math.max(alpha, 0), 1);
}

@subclass()
class Color extends Accessor {

  @property()
  @cast(clampRGB)
  r: number = 0;

  @property()
  @cast(clampRGB)
  g: number = 0;

  @property()
  @cast(clampRGB)
  b: number = 0;

  @property()
  @cast(clampRGB)
  a: number = 1;
}
  • declared(baseClass, mixinClasses):‎可用作类的函数。它扩展‎‎‎‎表达式并与修饰器结合使用,以创建与dojo‎.declare‎‎‎。有关更多信息,请参阅文档。‎参数
    • baseClass:‎要扩展的类。‎
    • ...mixinClasses:‎用于扩展基类的混合类。‎

@subclass("my.custom.class")
class MyCustomClass extends declared(Accessor) {
  // ...
}
  • property(propertyMetadata):‎此方便修饰器用于定义Accessor‎‎属性。‎任何在修饰器的定义的属性可以使用get和set。此外,您还可以监视人格属性更改‎‎。很多时候,此装饰器与@renderable配合使用‎‎‎‎。‎参数
    • propertyMetadata :‎描述属性的对象。‎规范
      • dependsOn :依赖项的属性名称。
      • type :用于自动转换‎属性的构造函数。
      • cast :‎用于自动转换属性的‎‎‎‎函数。定义 的替代方案。函数使用用户设置的值调用,应返回强制转换值。‎
      • readOnly :‎指示属性是否为只读。‎默认值为false。
      • constructOnly :‎指示属性是否可以在施工期间设置,但以其他方式为只读。‎默认值为false。
      • aliasOf :在它修饰的属性与其成员之一的内部属性之间创建双向绑定的属性修饰器。‎
      • value :属性的默认值。‎

@property()
title: string = "Awesome Title!"
  • subclass(declaredClass):参数
    • declaredClass :子类名称。‎

@subclass("my.custom.class")
class MyCustomClass extends Accessor {
  // ...
}

版权声明:
作者:Gomo
链接:https://www.develophm.com/index.php/decorators/1192/
来源:开发之家
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>