Els decoradors són una característica avançada de TypeScript que permeten modificar el comportament de classes, mètodes, propietats o paràmetres. Són una forma poderosa de metaprogramació que pot ajudar a simplificar i organitzar el codi, especialment en aplicacions grans.
Què són els Decoradors?
- Definició: Els decoradors són funcions que poden ser aplicades a classes, mètodes, accessors, propietats o paràmetres per modificar el seu comportament.
- Ús Comú: S'utilitzen sovint en frameworks com Angular per a la injecció de dependències, validació, i altres tasques repetitives.
Tipus de Decoradors
- Decoradors de Classe: S'apliquen a la definició d'una classe.
- Decoradors de Mètode: S'apliquen a un mètode d'una classe.
- Decoradors de Propietat: S'apliquen a una propietat d'una classe.
- Decoradors de Paràmetre: S'apliquen a un paràmetre d'un mètode.
Exemple de Decorador de Classe
Un decorador de classe pot modificar o substituir la classe a la qual s'aplica.
function logClass(target: Function) { console.log(`Classe creada: ${target.name}`); } @logClass class MyClass { constructor() { console.log('Instància de MyClass creada'); } } const instance = new MyClass();
Explicació
logClass
: És un decorador de classe que rep la funció constructora de la classe com a argument.@logClass
: Aplica el decorador aMyClass
, imprimint un missatge quan la classe es defineix.
Exemple de Decorador de Mètode
Els decoradors de mètode poden modificar el comportament dels mètodes d'una classe.
function logMethod(target: Object, propertyKey: string, descriptor: PropertyDescriptor) { const originalMethod = descriptor.value; descriptor.value = function (...args: any[]) { console.log(`Mètode ${propertyKey} cridat amb arguments: ${args}`); return originalMethod.apply(this, args); }; } class Calculator { @logMethod add(a: number, b: number): number { return a + b; } } const calculator = new Calculator(); calculator.add(2, 3);
Explicació
logMethod
: Modifica el mètodeadd
per registrar els arguments amb els quals es crida.descriptor.value
: Es guarda el mètode original i es redefineix per afegir funcionalitat addicional.
Exercici Pràctic
Objectiu: Crea un decorador de propietat que faci que una propietat sigui de només lectura.
Pasos
- Defineix un decorador de propietat que impedeixi la modificació de la propietat.
- Aplica el decorador a una classe i comprova el seu comportament.
Solució
function readonly(target: Object, propertyKey: string) { Object.defineProperty(target, propertyKey, { writable: false }); } class Person { @readonly name: string = 'John Doe'; } const person = new Person(); person.name = 'Jane Doe'; // Això hauria de fallar en temps d'execució console.log(person.name); // Ha de mostrar 'John Doe'
Explicació
readonly
: Defineix la propietat com a no modificable.Object.defineProperty
: Utilitzat per establir la propietatwritable
afalse
.
Conclusió
Els decoradors de TypeScript són una eina poderosa per a la metaprogramació, permetent modificar i estendre el comportament de les classes i els seus membres de manera elegant i reutilitzable. Amb la pràctica, els decoradors poden simplificar significativament el codi i millorar la seva organització.
En el següent tema, explorarem les millors pràctiques per utilitzar TypeScript i Playwright conjuntament, assegurant que el vostre codi sigui eficient i mantenible.
Dramaturg amb TypeScript: De Principiant a Avançat
Mòdul 1: Introducció a Playwright i TypeScript
- Què és Playwright?
- Configuració del Teu Entorn de Desenvolupament
- Introducció a TypeScript
- Sintaxi Bàsica de TypeScript
Mòdul 2: Començant amb Playwright
- Instal·lant Playwright
- Creant el Teu Primer Script de Playwright
- Comprenent els Conceptes Bàsics de Playwright
- Executant Proves de Playwright
Mòdul 3: Fonaments de Playwright i TypeScript
- Escrivint Proves en TypeScript
- Utilitzant Interfícies i Tipus de TypeScript
- Depurant Proves de Playwright
- Gestionant Codi Asíncron
Mòdul 4: Funcions Avançades de Playwright
- Treballant amb Selectors
- Gestionant Múltiples Pàgines i Frames
- Intercepció de Xarxa i Simulació
- Emulant Dispositius i Geolocalització
Mòdul 5: Estratègies d'Automatització de Proves
- Organitzant Proves i Suites de Proves
- Utilitzant Fixtures i Hooks
- Execució Paral·lela de Proves
- Integració Contínua amb Playwright
Mòdul 6: Tècniques Avançades de TypeScript
- Generics en TypeScript
- Tipus Avançats de TypeScript
- Decoradors de TypeScript
- Millors Pràctiques de TypeScript i Playwright
Mòdul 7: Aplicacions Reals de Playwright
- Proves de Cap a Cap amb Playwright
- Proves Visuals amb Playwright
- Proves de Rendiment amb Playwright
- Estudi de Cas: Implementant Playwright en un Projecte