0Pricing
TypeScript Academy · Lekcja

void, never i sygnatury funkcji

Poznaj void oznaczające brak wartości zwracanej oraz never dla kodu nieosiągalnego.

void, never i sygnatury funkcji to bezpłatna lekcja TypeScript Academy na CoddyKit. To lekcja 4 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

Dwa specjalne typy zwracane — void i never — reprezentują funkcje, które nie generują użytecznej wartości, oraz funkcje, które nigdy nie kończą działania w zwykły sposób.

void: brak znaczącej wartości zwracanej

void stosuje się, gdy funkcja wykonuje efekt uboczny, ale nie zwraca wartości. Pozwala na zwrócenie undefined, ale sygnalizuje, że wartości zwracanej nie należy używać.
function logError(msg: string): void {
  console.error(msg);
  // implicit return undefined
}

Różnica między void a undefined

void i undefined są podobne, ale różne. Funkcja o typie void może zwrócić undefined. void sygnalizuje jednak, że wywołujący powinien zignorować wartość zwracaną.
const fn: () => void = () => 42; // Allowed! Caller ignores return
const fn2: () => undefined = () => 42; // Error

void w callbackach

Podczas typowania parametru callbacku void oznacza, że wywołujący nie używa wartości zwracanej. Dzięki temu callbacki mogą zwracać dowolny typ.
function run(cb: () => void): void { cb(); }
run(() => 'hello'); // OK — return value ignored

never: typ nieosiągalny

never reprezentuje wartość, która nigdy nie występuje. Funkcja zwracająca never albo zgłasza wyjątek, albo wykonuje nieskończoną pętlę.
function fail(msg: string): never {
  throw new Error(msg);
}
function loop(): never {
  while (true) {}
}

never w sprawdzaniu kompletności

never jest używany w instrukcjach switch, aby upewnić się, że obsłużono wszystkie przypadki unii. Przypisanie do never powoduje błąd, jeśli pominięto któryś przypadek.
type Shape = 'circle' | 'square';
function area(s: Shape): number {
  switch (s) {
    case 'circle': return 3.14;
    case 'square': return 1;
    default:
      const _: never = s; // Error if a new shape is added
      return 0;
  }
}

never jest podtypem każdego typu

never można przypisać do każdego typu (nigdy nie występuje, więc w sposób pusty spełnia wymagania dowolnego typu). Żadnego innego typu nie można przypisać do never.

Sygnatury typów funkcji

Typ funkcji zapisuje się jako `(param: Type) => ReturnType`. Opisuje to funkcje jako wartości pierwszej klasy.
type Handler = (event: MouseEvent) => void;
type Transform = (input: string) => string;

Sygnatury wywołania w interfejsach

Interfejsy mogą definiować typy wywoływalne za pomocą składni sygnatury wywołania.
interface Formatter {
  (value: string): string;
  locale: string;
}

Sygnatury konstruktora

Interfejsy mogą również definiować typy konstruowalne za pomocą słowa kluczowego new w sygnaturze konstruktora.
interface Constructor {
  new (name: string): Animal;
}

Łączenie void i never w obsłudze błędów

Funkcje, które zawsze zgłaszają wyjątek, używają never. Funkcje, które przechwytują błędy i niczego nie zwracają, używają void. To rozróżnienie ma znaczenie podczas analizy przepływu sterowania.
function orThrow(val: string | null): string {
  if (val === null) fail('null!'); // never
  return val; // TypeScript knows this is reachable
}

Szybkie sprawdzenie

Który typ zwracany sygnalizuje, że funkcja zawsze zgłosi błąd i nigdy nie zakończy się w zwykły sposób?

Podsumowanie

Używaj void dla funkcji wykonujących efekty uboczne i niezwracających znaczącej wartości. Używaj never dla funkcji zgłaszających wyjątki lub wykonujących pętlę. never umożliwia sprawdzanie kompletności i jest podtypem wszystkich typów.

Często zadawane pytania

Czy lekcja „void, never i sygnatury funkcji” jest bezpłatna?

Tak — pełny tekst „void, never i sygnatury funkcji” 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 „void, never i sygnatury funkcji”?

Poznaj void oznaczające brak wartości zwracanej oraz never dla kodu nieosiągalnego. Ć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 4 z 4.

Ile czasu zajmuje lekcja „void, never i sygnatury funkcji”?

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. Adnotacje typów parametrów i wartości zwracanych
  2. Opcjonalne i domyślne parametry
  3. Parametry rest i spread z typami
  4. void, never i sygnatury funkcji
← Powrót do TypeScript Academy