Treci la conținutul principal

Tipuri utilitare în TypeScript

TypeScript vine cu un set de tipuri ajutătoare încorporate care modifică sau refolosesc alte tipuri. Acestea se numesc tipuri utilitare.

Acest capitol le prezintă pe cele mai populare.


Partial

Partial preia un tip de obiect și face fiecare proprietate opțională.

Exemplu

Partial<Point> îți permite să pornești de la un obiect gol și să completezi x și y mai târziu.

Prompt
Arată cum tipul utilitar Partial face opțională fiecare proprietate a unui tip de obiect. Declară o interfață Point cu x: number și y: number, creează pointPart de tipul Partial<Point> pornind de la un literal de obiect gol, apoi atribuie pointPart.x = 10. Fișierul doar declară și atribuie; nu afișează nimic.
Ieșire: program TypeScript și rezultatul capturat

Required

Required preia un tip de obiect și face fiecare proprietate obligatorie, chiar și pe cele marcate ca opționale cu ?.

Exemplu

mileage este opțională în Car, dar Required<Car> te obligă să îi dai o valoare.

Prompt
Arată cum tipul utilitar Required transformă proprietățile opționale în proprietăți obligatorii. Declară o interfață Car cu make: string, model: string și opționalul mileage?: number, apoi creează myCar de tipul Required<Car> cu make 'Ford', model 'Focus' și mileage 12000, adăugând un comentariu care spune că Required obligă ca mileage să fie definit. Nu se afișează nimic.
Ieșire: program TypeScript și rezultatul capturat

Record

Record este o formă scurtă de a descrie un tip de obiect cu un singur tip pentru chei și un singur tip pentru valori.

Notă: Record<string, number> înseamnă același lucru cu { [key: string]: number }.

Exemplu

Fiecare cheie din nameAgeMap trebuie să fie un string, iar fiecare valoare trebuie să fie un număr.

Prompt
Arată tipul utilitar Record folosit pentru a descrie o mapare de la chei de tip string la valori numerice. Creează o constantă nameAgeMap de tipul Record<string, number> care conține 'Alice' cu 21 și 'Bob' cu 25. Nu se afișează nimic.
Ieșire: program TypeScript și rezultatul capturat

Omit

Omit elimină dintr-un tip de obiect cheile pe care le numești.

Exemplu

Omit<Person, 'age' | 'location'> lasă doar name, așa că age și location nu pot fi setate pe bob.

Prompt
Arată cum tipul utilitar Omit elimină cheile numite dintr-un tip de obiect. Declară o interfață Person cu name: string, age: number și opționalul location?: string, apoi creează bob de tipul Omit<Person, 'age' | 'location'> care conține doar numele 'Bob', însoțit de un comentariu care explică faptul că age și location au fost eliminate și nu pot fi definite aici. Nu se afișează nimic.
Ieșire: program TypeScript și rezultatul capturat

Pick

Pick păstrează doar cheile pe care le numești și elimină tot restul dintr-un tip de obiect.

Exemplu

Pick<Person, 'name'> păstrează doar name, așa că age și location dispar din tip.

Prompt
Arată cum tipul utilitar Pick păstrează doar cheile numite ale unui tip de obiect. Declară o interfață Person cu name: string, age: number și opționalul location?: string, apoi creează bob de tipul Pick<Person, 'name'> care conține doar numele 'Bob', însoțit de un comentariu care explică faptul că a fost păstrat doar name, așa că age și location nu pot fi definite aici. Nu se afișează nimic.
Ieșire: program TypeScript și rezultatul capturat

Exclude

Exclude elimină membri dintr-un tip uniune.

Exemplu

După Exclude<Primitive, string> valoarea poate fi un număr sau un boolean, dar nu un string.

Prompt
Arată cum tipul utilitar Exclude elimină un membru dintr-un tip uniune. Declară un alias de tip Primitive ca string | number | boolean, apoi creează o constantă value de tipul Exclude<Primitive, string> cu valoarea true, însoțită de un comentariu care menționează că un string nu poate fi folosit aici, deoarece Exclude l-a eliminat. Nu se afișează nimic.
Ieșire: program TypeScript și rezultatul capturat

ReturnType

ReturnType preia un tip de funcție și îți dă tipul a ceea ce returnează acea funcție.

Exemplu

ReturnType<PointGenerator> este tipul de obiect { x: number; y: number; }.

Prompt
Arată cum tipul utilitar ReturnType extrage tipul returnat al unui tip de funcție. Declară un alias de tip PointGenerator pentru o funcție fără parametri care returnează { x: number; y: number; }, apoi creează o constantă point de tipul ReturnType<PointGenerator> cu x 10 și y 20. Nu se afișează nimic.
Ieșire: program TypeScript și rezultatul capturat

Parameters

Parameters preia un tip de funcție și îți dă tipurile parametrilor săi sub forma unui tuplu (un tip de tablou). Îl poți indexa pentru a obține tipul unui singur parametru.

Exemplu

Parameters<PointPrinter>[0] este tipul primului parametru: { x: number; y: number; }.

Prompt
Arată cum tipul utilitar Parameters extrage tipurile parametrilor unui tip de funcție sub forma unui tuplu. Declară un alias de tip PointPrinter pentru o funcție care primește p: { x: number; y: number; } și returnează void, apoi creează o constantă point de tipul Parameters<PointPrinter>[0] cu x 10 și y 20. Nu se afișează nimic.
Ieșire: program TypeScript și rezultatul capturat

Readonly

Readonly creează un tip nou în care fiecare proprietate este doar pentru citire. Odată ce o proprietate are o valoare, aceasta nu mai poate fi schimbată.

Notă: TypeScript oprește modificarea doar la compilare. Codul JavaScript compilat nu are o astfel de protecție, așa că o proprietate readonly poate fi totuși suprascrisă la rulare.

Exemplu

Atribuirea unui nou name unui Readonly<Person> este o eroare de compilare.

Prompt
Arată că tipul utilitar Readonly blochează atribuirea către proprietăți după creare. Declară o interfață Person cu name: string și age: number, creează o constantă person de tipul Readonly<Person> cu name "Dylan" și age 35, apoi încearcă să atribui 'Israel' lui person.name. Păstrează acea linie, astfel încât compilatorul să raporteze eroarea TS2540 (nu se poate atribui unei proprietăți doar pentru citire).
Ieșire: program TypeScript și rezultatul capturat