Els generics són una característica poderosa de TypeScript que permeten crear components reutilitzables que poden treballar amb diferents tipus de dades. Això proporciona una manera de crear funcions, classes i interfícies que no estan limitades a un sol tipus de dades, augmentant així la flexibilitat i la reutilització del codi.
Conceptes Clau
-
Definició de Generics:
- Els generics permeten definir funcions, classes o interfícies que poden treballar amb qualsevol tipus de dades.
- S'utilitzen per evitar la repetició de codi i per garantir la seguretat de tipus.
-
Sintaxi de Generics:
- Els generics es defineixen utilitzant els símbols
<T>
, onT
és un marcador de posició per a un tipus que es determinarà en el moment de la invocació.
- Els generics es defineixen utilitzant els símbols
-
Avantatges dels Generics:
- Reutilització del Codi: Permeten escriure codi més genèric i reutilitzable.
- Seguretat de Tipus: Proporcionen verificació de tipus en temps de compilació.
- Flexibilitat: Permeten treballar amb diferents tipus de dades sense perdre la seguretat de tipus.
Exemples Pràctics
Funcions Generiques
Una funció genèrica pot acceptar arguments de qualsevol tipus i retornar un valor del mateix tipus:
function identity<T>(arg: T): T { return arg; } // Ús de la funció genèrica let output1 = identity<string>("Hola, món!"); // T és string let output2 = identity<number>(42); // T és number
Classes Generiques
Les classes generiques permeten crear estructures de dades que poden treballar amb qualsevol tipus:
class Caixa<T> { private contingut: T; constructor(contingut: T) { this.contingut = contingut; } getContingut(): T { return this.contingut; } } // Ús de la classe genèrica let caixaDeNombres = new Caixa<number>(123); console.log(caixaDeNombres.getContingut()); // 123 let caixaDeText = new Caixa<string>("Hola"); console.log(caixaDeText.getContingut()); // Hola
Interfícies Generiques
Les interfícies generiques permeten definir contractes que poden treballar amb qualsevol tipus:
interface Parell<T, U> { primer: T; segon: U; } let parell: Parell<string, number> = { primer: "Hola", segon: 42 }; console.log(parell);
Exercicis Pràctics
Exercici 1: Funció Genèrica
Crea una funció genèrica reverseArray
que accepti un array de qualsevol tipus i retorni un nou array amb els elements en ordre invers.
function reverseArray<T>(items: T[]): T[] { return items.reverse(); } // Prova la funció let nombres = [1, 2, 3, 4]; let text = ["a", "b", "c", "d"]; console.log(reverseArray(nombres)); // [4, 3, 2, 1] console.log(reverseArray(text)); // ["d", "c", "b", "a"]
Exercici 2: Classe Genèrica
Crea una classe genèrica Stack
que implementi una estructura de dades de pila (LIFO).
class Stack<T> { private elements: T[] = []; push(element: T): void { this.elements.push(element); } pop(): T | undefined { return this.elements.pop(); } peek(): T | undefined { return this.elements[this.elements.length - 1]; } isEmpty(): boolean { return this.elements.length === 0; } } // Prova la classe let stack = new Stack<number>(); stack.push(10); stack.push(20); console.log(stack.pop()); // 20 console.log(stack.peek()); // 10
Conclusió
Els generics en TypeScript són una eina essencial per crear codi flexible i reutilitzable. Permeten treballar amb diferents tipus de dades sense comprometre la seguretat de tipus, cosa que és crucial en projectes grans i complexos. Practicar amb generics ajudarà a millorar la teva capacitat per escriure codi més net i eficient.
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