官术网_书友最值得收藏!

  • Expert Angular
  • Mathieu Nayrolles Rajesh Gunasundaram Sridhar Rao
  • 192字
  • 2021-07-15 17:05:34

Class decorators

Class decorators are declared above the class declaration. Class decorators can observe, modify, and replace a class' definition that it is decorated by applying to the constructor of that class. The signature of ClassDecorator in TypeScript is as follows:

declare type ClassDecorator = <TFunction extends Function>(target:  
      TFunction) => TFunction | void; 

Consider a Customer class; we would like that class to be frozen. Its existing properties should not be removed or new properties should not be added.

We can create a separate class that can take any object and freeze it. We can then decorate the customer class with @freezed to prevent adding new properties or removing the existing properties from the class:

@freezed 
class Customer { 
  
  public firstName: string; 
  public lastName: string; 
  
  constructor(firstName : string, lastName : string) { 
    this.firstName = firstName; 
    this.lastName = lastName; 
  } 
} 

The preceding class takes four arguments in the firstname and lastname constructors. The following are the code snippets of the function written for the @freezed decorator:

function freezed(target: any) { 
    Object.freeze(target); 
} 

Here, the freezed decorator takes target, which is the Customer class that is being decorated, and freezes it when it gets executed.

主站蜘蛛池模板: 宿迁市| 外汇| 柏乡县| 灌阳县| 龙江县| 东兴市| 岳阳县| 余庆县| 乐东| 石柱| 香格里拉县| 日照市| 合江县| 永善县| 丰宁| 沭阳县| 岢岚县| 蒲江县| 大英县| 安仁县| 阜宁县| 安塞县| 东乌| 纳雍县| 子长县| 巴青县| 沙洋县| 乌审旗| 正镶白旗| 星座| 湘乡市| 慈溪市| 合阳县| 林州市| 临汾市| 清新县| 新建县| 台南市| 仙居县| 清苑县| 邵武市|