0Pricing
TypeScript Academy · Lekcja

Zawężanie za pomocą typeof i wartości logicznych

Używaj sprawdzeń typeof do zawężania typów prostych.

Zawężanie za pomocą typeof i wartości logicznych to bezpłatna lekcja TypeScript Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej TypeScript Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs TypeScript Academy zawiera 4 lekcji w sumie.

Wprowadzenie

TypeScript zawęża typy unii wewnątrz bloków warunkowych. Sprawdzenia `typeof` i wartości logicznej należą do najczęściej używanych technik zawężania.

Zawężanie za pomocą typeof

Użyj `typeof`, aby sprawdzać typy prymitywne. TypeScript rozumie sprawdzenia typeof i zawęża typ wewnątrz bloku.
function process(val: string | number) {
  if (typeof val === 'string') {
    return val.toUpperCase(); // val: string
  }
  return val.toFixed(2); // val: number
}

Wartości zwracane przez typeof

typeof zwraca 'string', 'number', 'boolean', 'bigint', 'symbol', 'undefined', 'object' lub 'function'. Uwaga: typeof null === 'object' — to osobliwość JavaScriptu.
typeof 'hello'    // 'string'
typeof 42         // 'number'
typeof true       // 'boolean'
typeof null       // 'object' (quirk!)
typeof undefined  // 'undefined'

Zawężanie na podstawie wartości logicznej

Wartości JavaScriptu są uznawane za prawdziwe albo fałszywe. TypeScript zawęża `T | null | undefined` do `T` wewnątrz sprawdzenia wartości logicznej.
function greet(name: string | null) {
  if (name) {
    console.log('Hello, ' + name); // name: string
  } else {
    console.log('Hello, stranger');
  }
}

Wartości uznawane za fałszywe

Wartości uznawane w JavaScript za fałszywe to: false, 0, '', null, undefined, 0n, NaN. Zawężanie na podstawie wartości logicznej usuwa je z typu, gdy sprawdzenie zakończy się powodzeniem.

Zawężanie za pomocą konwersji na wartość logiczną

Użycie `Boolean(val)` lub `!!val` również usuwa null i undefined z zawężanego typu.
const items: (string | null)[] = ['a', null, 'b', null];
const strings = items.filter((x): x is string => x !== null);

Warunki zanegowane

TypeScript zawęża typ również w gałęziach else i po wcześniejszych instrukcjach return.
function getLength(val: string | null): number {
  if (!val) return 0; // early return narrows
  return val.length;  // val: string here
}

Łączenie typeof z porównaniem

Ścisła równość (===) połączona z typeof zapewnia precyzyjne zawężanie.
function accept(x: string | number | boolean) {
  if (typeof x === 'string' || typeof x === 'number') {
    console.log(x); // x: string | number
  }
}

typeof nie zawęża do null

Aby zawęzić typ do null, użyj ścisłego porównania `=== null`. Sprawdzenie wartości logicznej nie odróżnia null od innych wartości uznawanych za fałszywe.
function check(x: string | null | 0) {
  if (x === null) { /* x: null */ }
  else if (x === 0) { /* x: 0 */ }
  else { /* x: string */ }
}

Zawężanie w pętlach

TypeScript stosuje zawężanie również wewnątrz ciał pętli, a nie tylko w instrukcjach if.

Analiza przepływu sterowania

TypeScript śledzi typ w każdym punkcie kodu za pomocą analizy przepływu sterowania. Przypisania również aktualizują typ.
let x: string | number = 'hello';
// x: string
x = 42;
// x: number

Szybkie sprawdzenie

Jaki jest typ `val` wewnątrz `if (typeof val === 'string')`, jeśli początkowo miał typ `string | number`?

Podsumowanie

Sprawdzenia typeof i warunki oparte na wartościach logicznych zawężają typy unii w TypeScript. TypeScript używa analizy przepływu sterowania do śledzenia typów w każdym punkcie. Do sprawdzania null i undefined używaj ścisłej równości.

Często zadawane pytania

Czy lekcja „Zawężanie za pomocą typeof i wartości logicznych” jest bezpłatna?

Tak — pełny tekst „Zawężanie za pomocą typeof i wartości logicznych” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu TypeScript Academy, przejdź na CoddyKit PRO. Kurs TypeScript Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Zawężanie za pomocą typeof i wartości logicznych”?

Używaj sprawdzeń typeof do zawężania typów prostych. Ćwiczysz TypeScript Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć TypeScript Academy?

Nie wymagamy żadnego doświadczenia. TypeScript Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.

Ile czasu zajmuje lekcja „Zawężanie za pomocą typeof i wartości logicznych”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji TypeScript Academy?

Tak. Każda lekcja TypeScript Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Zawężanie za pomocą typeof i wartości logicznych
  2. Zawężanie za pomocą instanceof i in
  3. Funkcje predykatów typów definiowane przez użytkownika
  4. Sprawdzanie kompletności za pomocą never
← Powrót do TypeScript Academy