TypeScriptTypy podstawowe

unknown

Bezpieczny odpowiednik any: wartość nieznanego typu, której trzeba najpierw sprawdzić.

Na tej stronie

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: unknown

Więcej przykładów

#
Bez sprawdzenia nie wolno
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 do unknown, a potem sprawdzaj kształt danych. To chroni przed zaskoczeniem przy zmianach API.
  • W catch (error) błąd ma typ unknown. Sprawdź error instanceof Error, zanim odczytasz error.message.

Powiązane hasła

#

Widzisz błąd albo brakuje przykładu? Napisz do nas.