馃敟 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.