Conversie de tip în TypeScript
Uneori ai nevoie să înlocuiești tipul unei variabile — de exemplu atunci când o bibliotecă îți oferă un tip greșit.
Conversia de tip este procesul prin care un tip este înlocuit cu altul.
Conversie de tip cu as
Cel mai simplu mod de a converti tipul unei variabile este cuvântul cheie as. Acesta schimbă direct tipul pe care TypeScript îl folosește pentru acea variabilă.
Notă: Conversia de tip nu schimbă datele stocate în variabilă. Codul următor nu funcționează așa cum te-ai aștepta, pentru că x conține în continuare un număr:
let x: unknown = 4;console.log((x as string).length); // prints undefined since numbers don't have a length
Notă: TypeScript verifică în continuare conversiile de tip și le respinge pe cele care nu par corecte. Linia următoare este o eroare de tip, pentru că nu are sens să convertești un număr într-un șir fără a transforma datele:
console.log((4 as string).length); // Error: Conversion of type 'number' to type 'string' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first.
Secțiunea „Conversie de tip forțată” de mai jos arată cum poți trece peste această restricție.
Exemplu
x are tipul unknown, deci nu poți citi direct .length. Conversia lui la string face proprietatea disponibilă.
as.
Declară x cu tipul unknown care conține șirul 'hello', apoi afișează (x as string).length, astfel încât rezultatul să fie 5.
Ieșire: program TypeScript și rezultatul capturat
let x: unknown = 'hello';
console.log((x as string).length);
Conversie de tip cu <>
Folosirea lui <> funcționează la fel ca o conversie cu as: scrie tipul dorit între paranteze unghiulare, înaintea valorii.
Notă: Acest stil de conversie de tip nu funcționează în fișierele TSX, cum sunt componentele React.
Exemplu
as.
Declară x cu tipul unknown care conține șirul 'hello', apoi afișează (<string>x).length, astfel încât rezultatul să fie 5.
Ieșire: program TypeScript și rezultatul capturat
let x: unknown = 'hello';
console.log((<string>x).length);
Conversie de tip forțată
Pentru a ocoli erorile de tip pe care TypeScript le semnalează la o conversie, convertește mai întâi valoarea la unknown, apoi la tipul dorit.
Exemplu
Șirul este convertit forțat la tipul number, iar TypeScript acceptă dubla conversie. Totuși, verifică în continuare ce faci cu rezultatul: un number nu are proprietatea length, așa că acea linie este raportată ca eroare. Dacă verificarea este ignorată, valoarea rămâne un șir care se dă drept număr, iar citirea lui .length dă undefined.
unknown, apoi conversia la tipul dorit.
Declară x ca șirul 'hello', apoi afișează ((x as unknown) as number).length, cu un comentariu care explică faptul că x nu este de fapt un număr, deci valoarea afișată este undefined.
Ieșire: program TypeScript și rezultatul capturat
let x = 'hello';
console.log(((x as unknown) as number).length); // x nu este de fapt un număr, așa că aici se va returna undefined