decorators

AMD: require(["geoscene/core/accessorSupport/decorators"], (decorators) => { /* 代码 */ });
ESM: import * as decorators from "@geoscene/core/core/accessorSupport/decorators";
对象: geoscene/core/accessorSupport/decorators
起始版本: GeoScene API for JavaScript 4.22

此模块包含 Accessor TypeScript decorators。Decorators 允许我们在设计时定义和/或修改现有属性、方法和构造函数的行为。

方法列表

名称 返回值类型 描述 对象
Function更多信息

一个属性 decorator,用于在它所装饰的属性与其成员之一的内部属性之间创建双向绑定。

更多信息decorators
Function更多信息

此方法 decorator 用于定义将从类强制转换属性的方法。

更多信息decorators
Function更多信息

此属性 decorator 用于定义属性的函数或类。

更多信息decorators
Function更多信息

此便利 decorator 用于定义 Accessor 属性。

更多信息decorators
Functiondecorators

方法详细说明

aliasOf(propertyName){Function}

一个属性 decorator,用于在它所装饰的属性与其成员之一的内部属性之间创建双向绑定。

参数:
propertyName String

属性名称。

返回值:
类型 描述
Function 属性 decorator。
示例代码:
// 属性示例
@aliasOf("viewModel.name")
name: string = "name";
// 方法示例
@aliasOf("viewModel.someMethod")
someMethod: () => string;
cast(propertyName){Function}

此方法 decorator 用于定义将从类强制转换属性的方法。

参数:
propertyName String

函数将强制转换的属性名称。

返回值:
类型 描述
Function 方法描述符。
另参阅:
示例代码:
import Accessor from "geoscene/core/Accessor";
import { subclass, property, cast } from "geoscene/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) {
    // 将设置在 r、g 或 b 上的值限制在 0 到 255 之间的强制转换方法
    return Math.max(0, Math.min(255, value));
  }

  @cast("a")
  protected castAlpha(value) {
    // 将值设置在 0 到 255 之间的强制转换方法
    return Math.max(0, Math.min(1, value));
  }
}
cast(functionOrClass){Function}

此属性 decorator 用于定义属性的函数或类。

参数:
functionOrClass Function

要强制转换属性的函数或类

返回值:
类型 描述
Function

属性描述符。

另参阅:
示例代码:
import Accessor from "geoscene/core/Accessor";
import { subclass, property, cast } from "geoscene/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;
}
property(propertyMetadata){Function}

此便利 decorator 用于定义 Accessor 属性。使用此 decorator 定义的任何属性现在都可以被获取设置。此外,您还可以监视任何属性更改

参数:
规范:
propertyMetadata Object
optional

描述属性的对象。

规范:
dependsOn String[]
optional

依赖项的属性名称。

type Function
optional

用于自动转换属性的构造函数。

cast Function
optional

用于自动转换属性的函数。 替代定义 type。 该函数使用用户设置的值调用,并应返回强制转换值。

readOnly Boolean
optional
默认值: false

指示属性是否为只读。

constructOnly Boolean
optional
默认值: false

指示是否可以在构造期间设置属性,但在其他情况下为只读。

aliasOf String
optional

在它所装饰的属性与其成员之一的内部属性之间创建双向绑定的属性 decorator。

value Object
optional

属性的默认值。

返回值:
类型 描述
Function 属性描述符。
另参阅:
示例代码:
// typescript 语法来指定属性。
@property() title: string = "Awesome Title!"
subclass(declaredClass){Function}
参数:
declaredClass String
optional

子类名称。

返回值:
类型 描述
Function 类 decorator。
示例代码:
// Typescript 语法,它创建一个扩展 Accessor 类的子类。
@subclass("my.custom.class") class MyCustomClass extends Accessor { // ... }

Your browser is no longer supported. Please upgrade your browser for the best experience. See our browser deprecation post for more details.