Tipuri uniune în TypeScript
Un tip uniune se folosește atunci când o valoare poate avea mai multe tipuri.
De exemplu, o proprietate poate conține fie un string, fie un number.
Uniune | (SAU)
Simbolul | înseamnă „sau”. Scriind string | number spui că parametrul este fie un string, fie un number.
Exemplu
Atât numărul 404, cât și șirul '404' sunt acceptate de aceeași funcție.
Prompt
Arată un parametru care acceptă fie un string, fie un number, folosind un tip uniune.
Scrie o funcție
printStatusCode al cărei parametru code este tipat string | number și care afișează „Codul meu de stare este .” într-un șir șablon, apoi apeleaz-o o dată cu numărul 404 și o dată cu șirul '404'.
Ieșire: program TypeScript și rezultatul capturat
script.ts
function printStatusCode(code: string | number) {
console.log(`Codul meu de stare este ${code}.`)
}
printStatusCode(404);
printStatusCode('404');
Erori la tipurile uniune
Notă: Când folosești un tip uniune, trebuie să știi ce tip ai de fapt înainte de a folosi funcționalități specifice unui tip, altfel obții erori de tip.
Exemplu
Apelul lui toUpperCase() eșuează aici: este o metodă de string, iar un number nu o are, așa că TypeScript respinge apelul pe string | number.
Prompt
Arată eroarea de compilare pe care o primești când apelezi o metodă specifică doar tipului string pe o valoare cu tip uniune.
Scrie o funcție
printStatusCode cu un parametru code: string | number care afișează code.toUpperCase() într-un șir șablon; compilatorul trebuie să raporteze că toUpperCase nu există pe tipul string | number, deoarece number nu are o astfel de metodă.
Ieșire: program TypeScript și rezultatul capturat
script.ts
function printStatusCode(code: string | number) {
console.log(`Codul meu de stare este ${code.toUpperCase()}.`) // eroare: proprietatea 'toUpperCase' nu există pe tipul 'string | number'. Proprietatea 'toUpperCase' nu există pe tipul 'number'
}