Lecții din modul (2/2)
Tipuri mapate
Tipurile mapate vă permit să creați noi tipuri prin transformarea proprietăților celor existente, unul câte unul. Acestea sunt construite pe partea de sus a sintaxei buclei peste chei folosind operatorul keyof.
type Mapped<T> = {
[P in keyof T]: T[P];
};Acest exemplu arată un tip mapat identic cu cel original: se repetă peste fiecare tastă P din keyof T și atribuie același tip T[P].
Modificatori de mutabilitate și opționalitate
Putem adăuga sau elimina modificatori precum readonly și ? (opționalitate) prefixându-le cu + (adăugați, implicit) sau - (eliminați).
De exemplu, pentru a elimina opționalitatea din toate proprietățile unui tip (făcându-le necesare):
type Concrete<T> = {
[P in keyof T]-?: T[P];
};Modificatorul -? elimină indicatorul de opționalitate din fiecare proprietate.
Remapare cheie cu as
În TypeScript 4.1+, puteți remapa cheile într-un tip mapat utilizând clauza as și tipurile literal de șablon.
type WriteSetters<T> = {
[K in keyof T as `set${Capitalize<string & K>}`]: (value: T[K]) => void;
};Aici schimbăm numele fiecărei proprietăți K în set[CapitalizedKey] și modificăm tipul acesteia într-o funcție setter.
Încercați-l singur
Exercițiul 1: Faceți ca proprietăți să fie anulate
Declarați un tip mapat generic Nullable<T> care preia un obiect T și transformă fiecare proprietate astfel încât să poată accepta și valoarea null (de exemplu, T[K] | null).
Afișează indiciu
Utilizați sintaxa [K în cheia T]: T[K] | nul; în interiorul obiectului tip mapat.
Soluție disponibilă după 3 încercări
Exercițiul 2: Generarea generatoarelor dinamice cu as
Creați un tip mapat numit GetterNames<T> care transformă cheile obiectului T prefixându-le cu „get” și scriind cu majuscule cheia originală (utilizați Capitalize). De exemplu, dacă o cheie este nume, ar trebui să devină getName. Setați tipul proprietăților la () => T[K].
Afișează indiciu
Folosiți ca \`get\${Capitalize<string & K>}\` pentru a remapa cheia și () => T[K] ca tip de returnare a proprietății.
Soluție disponibilă după 3 încercări