Treci la conținutul principal

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ă.

Prompt
Arată o conversie de tip cu ajutorul cuvântului cheie 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

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

Prompt
Arată sintaxa de conversie de tip cu paranteze unghiulare ca alternativă la 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

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.

Prompt
Arată conversia de tip forțată: mai întâi conversia la 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