TypeScript Academy · Lekcja

typeof, równość i zawężanie przez truthiness

Używanie typeof, ścisłej równości i truthiness do zawężania typów unii bez niebezpiecznych rzutowań

Lekcja 1 z 38 kroki

typeof, równość i zawężanie przez truthiness to bezpłatna lekcja TypeScript Academy na CoddyKit. To lekcja 1 z 3. 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 3 lekcji w sumie.

Wprowadzenie

Cel: Zawężać szerokie typy unii do dokładnych typów za pomocą typeof, ścisłej równości i truthiness. Umożliwia to bezpieczny dostęp do właściwości i metod.

Zawężanie przez typeof

typeof zawęża typy prymitywne (string, number, boolean, bigint, symbol, undefined). Należy używać go do bezpiecznego rozgałęziania logiki.

function printLen(x: string | number) {
  if (typeof x === "string") {
    console.log(x.length); // x is string
  } else {
    console.log(x.toFixed(2)); // x is number
  }
}

printLen("TS");
printLen(3.14);

Ścisła równość

Należy preferować ===/!== w celu precyzyjnego zawężania; należy unikać ==, które wymusza konwersję i wprowadza w błąd zarówno ludzi, jak i kompilator.

function greet(x: string | null) {
  if (x !== null) {
    // x is string here
    console.log("Hello " + x.toUpperCase());
  } else {
    console.log("No name");
  }
}

greet("Ada");
greet(null);

Zawężanie przez truthiness

Truthiness również zawęża typy, ale należy uważać: "" i 0 są wartościami falsy, mimo że są poprawnymi wartościami. Gdy trzeba je rozróżnić, należy używać ścisłych kontroli.

function show(v: string | 0 | "" | null | undefined) {
  if (v) {
    // v is string here (non-empty)
    console.log("value:", v);
  } else {
    // v is "", 0, null, or undefined
    console.log("empty");
  }
}

show("ok");
show("");
show(0);

Łączenie kontroli

Kontrole można łączyć, aby zabezpieczyć zagnieżdżony dostęp. Dla większej precyzji należy preferować jawne u !== null && u !== undefined, gdy 0/"" są poprawnymi przypadkami.

type MaybeUser = { name: string } | null | undefined;

function hi(u: MaybeUser) {
  if (u && u.name) {
    console.log("Hi " + u.name);
  } else {
    console.log("No user");
  }
}

hi({ name: "Lin" });
hi(null);

Wskazówki

Wskazówki:

  • Należy używać typeof dla typów prymitywnych.
  • Należy używać ===/!==, aby uniknąć wymuszania konwersji.
  • Truthiness jest zwięzłe, ale należy go unikać, gdy puste ciągi znaków lub zero mają znaczenie.

Sprawdzenie zawężania

Szybkie sprawdzenie: Która kontrola prawidłowo zawęża wartość do typu string?

Podsumowanie

Podsumowanie: Typy należy zawężać za pomocą typeof, ścisłej równości i truthiness. Gdy 0/"" są poprawnymi wartościami, należy preferować jawne kontrole.

Bezpłatny start

Ucz się TypeScript dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
101
Lekcje
352

Często zadawane pytania

Czy lekcja „typeof, równość i zawężanie przez truthiness” jest bezpłatna?

Tak — pełny tekst „typeof, równość i zawężanie przez truthiness” 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 3 lekcji w sumie.

Co nauczysz się w „typeof, równość i zawężanie przez truthiness”?

Używanie typeof, ścisłej równości i truthiness do zawężania typów unii bez niebezpiecznych rzutowań Ć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 3.

Ile czasu zajmuje lekcja „typeof, równość i zawężanie przez truthiness”?

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. typeof, równość i zawężanie przez truthiness
  2. in, instanceof i unie rozróżniane
  3. Kompletność z never — wprowadzenie
← Powrót do TypeScript Academy