Asercja non-null (!)

Wykrzyknik po wyrażeniu usuwa z typu null i undefined bez sprawdzania.

Na tej stronie

Przykład

#
TypeScript
const lessons = new Map<string, number>([['html', 11], ['css', 9]])

const htmlModules = lessons.get('html')!
console.log(htmlModules + 1)

const pythonModules = lessons.get('python') ?? 0
console.log(pythonModules)
Wynik
12
0

Definicja i zastosowanie

#

Operator ! postawiony po wyrażeniu mówi kompilatorowi: „ta wartość na pewno nie jest null ani undefined”. Typ HTMLElement | null staje się HTMLElement.

Podobnie jak asercja as, niczego nie sprawdza w działającym programie. Jeśli wartość jednak okaże się null, dostaniesz błąd w czasie działania, dokładnie taki, przed jakim chroni strictNullChecks.

Używaj go tylko wtedy, gdy masz pewność z innego źródła, na przykład element istnieje w szablonie strony. W pozostałych przypadkach lepiej obsłużyć brak wartości warunkiem albo operatorami ?. i ??.

Składnia

#
Składnia
wyrazenie!

Więcej przykładów

#
Wykrzyknik w miejscu, gdzie wartości nie ma
TypeScript
const missing = lessons.get('rust')!
try {
  console.log(missing.toFixed(0))
} catch (error) {
  console.log('Błąd w działaniu: wartość była undefined')
}
Wynik
Błąd w działaniu: wartość była undefined

Dobre praktyki

#
  • Każdy ! w kodzie to miejsce, w którym wyłączasz ochronę kompilatora. Zastanów się, czy nie lepiej obsłużyć brak wartości.
  • W testach i szybkich skryptach ! bywa akceptowalny. W kodzie produkcyjnym preferuj jawne sprawdzenia.

Powiązane hasła

#

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