TypeScriptTypy podstawowe
unknown
Bezpieczny odpowiednik any: wartość nieznanego typu, której trzeba najpierw sprawdzić.
Przykład
#TypeScript
function describe(value: unknown): string {
if (typeof value === 'string') return `Napis o długości ${value.length}`
if (typeof value === 'number') return `Liczba ${value.toFixed(1)}`
if (Array.isArray(value)) return `Tablica z ${value.length} elementami`
return 'Coś innego'
}
console.log(describe('CodeWorlds'))
console.log(describe(3.14159))
console.log(describe([1, 2, 3]))Wynik
Napis o długości 10 Liczba 3.1 Tablica z 3 elementami
Definicja i zastosowanie
#Typ unknown oznacza wartość, o której nic nie wiadomo. Tak jak do any, możesz przypisać do niej wszystko, ale nie możesz jej użyć, dopóki nie sprawdzisz, czym jest.
Sprawdzasz ją przez zawężanie: typeof value === "string", Array.isArray(value), value instanceof Date albo własne funkcje strażnicze. Po takim sprawdzeniu kompilator zna już dokładny typ w danym bloku.
To idealny typ dla danych z zewnątrz: odpowiedzi z API, wyniku JSON.parse(), wartości z localStorage czy błędu w bloku catch.
Składnia
#Składnia
let wartosc: unknownWięcej przykładów
#TypeScript
const input: unknown = JSON.parse('{"level": 7}')
console.log(input.level)
// Błąd: 'input' is of type 'unknown'.Dobre praktyki
#- Wynik
JSON.parse()przypisuj dounknown, a potem sprawdzaj kształt danych. To chroni przed zaskoczeniem przy zmianach API. - W
catch (error)błąd ma typunknown. Sprawdźerror instanceof Error, zanim odczytaszerror.message.
Powiązane hasła
#- anyTyp wyłączający sprawdzanie: wartość może być czymkolwiek.
- Zawężanie typówUstalanie dokładniejszego typu wartości na podstawie sprawdzeń w kodzie.
- Strażnicy typów (value is T)Własne funkcje sprawdzające, które zawężają typ w miejscu wywołania.
- neverTyp wartości, która nigdy nie wystąpi: funkcji, które nie kończą się normalnie, i niemożliwych przypadków.
Widzisz błąd albo brakuje przykładu? Napisz do nas.