Asercja typu (as)

Wskazanie kompilatorowi typu wartości, gdy wiesz więcej niż on.

Na tej stronie

Przykład

#
TypeScript
type Lesson = { title: string; minutes: number }

const raw = '{"title":"Grid","minutes":16}'
const lesson = JSON.parse(raw) as Lesson

console.log(lesson.title.toUpperCase(), lesson.minutes)
Wynik
GRID 16

Definicja i zastosowanie

#

Asercja value as Typ mówi kompilatorowi: „zaufaj mi, to jest Typ”. Nie zmienia wartości ani niczego nie sprawdza w działającym programie. Wpływa wyłącznie na typ w czasie kompilacji.

Uzasadnione przypadki to na przykład element DOM, o którym wiesz, że jest polem formularza (as HTMLInputElement), albo dane, które sprawdziła już wcześniej inna warstwa aplikacji.

Nadużywana asercja to cicha furtka dla błędów. Jeśli wartość w rzeczywistości ma inny kształt, program wyłoży się dopiero w działaniu. Tam, gdzie się da, zamiast as używaj zawężania i strażników typów.

Składnia

#
Składnia
const wartosc = wyrazenie as Typ

Więcej przykładów

#
Asercja nie sprawdza danych
TypeScript
const broken = JSON.parse('{"name":"Grid"}') as Lesson

try {
  console.log(broken.title.toUpperCase())
} catch (error) {
  console.log('Błąd w działaniu, mimo że kompilator nie protestował')
}
Wynik
Błąd w działaniu, mimo że kompilator nie protestował

Dobre praktyki

#
  • Traktuj as jako ostateczność. Przy danych z zewnątrz lepiej sprawdzić ich kształt strażnikiem typu.
  • Podwójna asercja as unknown as T prawie zawsze oznacza, że coś jest nie tak z typami.

Powiązane hasła

#

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