Anuncios

Bienvenidos sean a este post, hoy veremos otra variacion de los decoradores de propiedades.

Anuncios

En el post anterior vimos como es el decorador de propiedades, pero esta a su vez tambien podemos aplicarlo a propiedades de clases estaticas. Si bien se aplican de la misma forma que las normales a la hora de enviarlos a la decoradora se hace de manera diferente. Analicemos el siguiente codigo:

function decorarProp(destino: any, nombre: string) {
        console.log("destino.constructor: " + destino.constructor);
        console.log("Nombre de propiedad: " + nombre);
}

class clase {
        @decorarProp
        static id: number | undefined;
}
Anuncios

La funcion decoradora es la misma que vimos en el inicio del post anterior donde tenemos la clase en el primer argumento y la propiedad en el segundo. En el bloque de esta mostraremos al constructor de la clase y el nombre (no su valor) de la propiedad decorada. En la clase aplicamos la decoracion a la propiedad, tal como vimos en el post anterior, pero la diferencia radicara que en este caso la propiedad sera de tipo static. Si lo compilamos y ejecutamos esta es su salida:

$ node decorar.js
destino.constructor: function Function() { [native code] }
Nombre de propiedad: id
$
Anuncios

Como podemos ver funciona como si fuera uno comun y corriente pero si observan el constructor no nos informa el codigo de este, tomemos la funcion decoradora y realicemos los siguientes cambios:

function decorarProp(dest: any, nombre: string) {
        if (typeof (dest) === 'function') {
          console.log('nombre de clase: ' + dest.name);
        } else {
          console.log('nombre de clase: ' + dest.constructor.name);
        }
        console.log('nombre de propiedad: ' + nombre);
}
Anuncios

En este caso agregamos un condicional para evaluar si el objeto que contiene a la propiedad es una funcion o una clase. Para el caso de que sea tipo function indicaremos que el nombre de la clase sera el nombre de la misma, de lo contrario mostraremos el nombre del constructor. Por ultimo mostraremos el nombre de la propiedad. La clase no recibe ninguna modificacion, compilemos y veamos su salida:

$ node decorar.js
nombre de clase: clase
nombre de propiedad: id
$
Anuncios

Como pueden ver cumplio lo solicitado y nos trajo solamente los datos solicitados y como pueden ver su manera de trabajar es muy similar al decorador de propiedades comun.

Anuncios

En resumen, hoy hemos visto como son los decoradores de propiedades pero estaticos, que son, como se utilizan, sus similitudes con el comun y algunas diferencias con respecto a este.. Espero les sea de utilidad sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Anuncios
pp258

Donación

Es para mantenimento del sitio, gracias!

$1.50