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.