馃 Decorators, Properties (decoradores de propiedades)

Un decorador de propiedades es declarado antes de la declaraci贸n de la propiedad. Y no puede ser utilizado para decorar ning煤n otro scope como podr铆a ser un m茅todo o una clase.

La expresi贸n para el decorador de la propiedad ser谩 llamada como una funci贸n en tiempo de ejecuci贸n, con los siguientes argumentos:

  • La funci贸n constructora de la clase para un miembro est谩tico o el prototype de la clase para una instancia.
  • El nombre del miembro.

El Property Descriptor no es proporcionado como argumento para un decorador de propiedades.

function Writable(value: boolean) {
  return function (target: any, propertyKey: string): any {
    console.log("target", target);                              // PostRequest {}
    console.log("propertyKey", propertyKey);                    // _email
    const descriptor: PropertyDescriptor = {
      writable: value,

    };
    return descriptor;
  };
}

class PostRequest {
  @Writable(true)
  public _email: string = "";
}

const miRequest = new PostRequest();
miRequest._email = "[email protected]";

Le hemos indicado a nuestra clase PostRequest que la propiedad _email es escribible mediante el decorador Writable.

Si cambiamos el valor del argumento true a false, y volvemos a ejecutar el c贸digo, obtendremos esto en la salida.

TypeError: Cannot assign to read only property '_email' of object '#<PostRequest>'

Lo anterior debido a que hemos indicado que la propiedad _email no es escribible.