0Pricing
TypeScript Academy · Lekcja

Typy literałów stringów i liczb

Ograniczaj wartości do dokładnie określonych stringów i liczb za pomocą typów literałów

Typy literałów stringów i liczb 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.

Czym jest typ literału

Większość typów opisuje zbiór wartości. string oznacza dowolny ciąg znaków, a number oznacza dowolną liczbę. Typ literału zawęża ten zbiór do jednej dokładnej wartości.

Typ 'north' zezwala wyłącznie na ciąg znaków 'north' — na nic innego. Typy literałów pozwalają modelować precyzyjne, skończone zbiory dozwolonych wartości bezpośrednio w systemie typów.

let dir: 'north' = 'north';
console.log(dir);
// dir = 'south'; // Error: not assignable to type 'north'

Unie literałów tekstowych

Pojedynczy literał sam w sobie nie jest szczególnie użyteczny. Kilka literałów można połączyć za pomocą |, tworząc unię literałów. To idiomatyczny sposób modelowania stałego zbioru opcji.

Direction może przyjmować tylko jedną z czterech dokładnych wartości tekstowych.

type Direction = 'north' | 'south' | 'east' | 'west';

let heading: Direction = 'east';
console.log('Heading:', heading);

heading = 'west';
console.log('Now:', heading);

Odrzucanie nieprawidłowych wartości

Siła unii literałów polega na tym, że kompilator odrzuca wszystko, co nie należy do dozwolonego zbioru. Literówki i nieprawidłowe opcje stają się błędami podczas kompilacji, a nie błędami występującymi w czasie działania.

type Direction = 'north' | 'south' | 'east' | 'west';

let heading: Direction = 'north';
console.log(heading);
// heading = 'up'; // Error: '"up"' is not assignable to 'Direction'

Literały jako parametry funkcji

Unii literałów należy używać w przypadku parametrów funkcji, które przyjmują tylko określone wartości. Osoba wywołująca funkcję otrzymuje autouzupełnianie i nie może przekazać nieprawidłowej wartości.

type Direction = 'north' | 'south' | 'east' | 'west';

function move(dir: Direction): string {
  return 'Moving ' + dir;
}

console.log(move('south'));
// console.log(move('left')); // Error

Typy literałów liczbowych

Typy literałów nie dotyczą tylko ciągów znaków. Można używać także dokładnych liczb. Klasycznym przykładem jest sześcienna kostka, której wartość ścianki musi należeć do zakresu od 1 do 6.

type Dice = 1 | 2 | 3 | 4 | 5 | 6;

function roll(): Dice {
  return (Math.floor(Math.random() * 6) + 1) as Dice;
}

console.log('Rolled:', roll());

Literały liczbowe w parametrach

Unie literałów liczbowych ograniczają dane wejściowe do dokładnego zbioru liczb — doskonale nadają się na przykład do poziomów jakości, kodów podobnych do kodów HTTP lub rozmiarów siatki.

type Quality = 1 | 2 | 3;

function setQuality(level: Quality): void {
  console.log('Quality set to', level);
}

setQuality(2);
// setQuality(5); // Error: 5 is not 1 | 2 | 3

Łączenie literałów tekstowych i liczbowych

Unia może łączyć różne rodzaje literałów. Jest to przydatne w interfejsach API, które przyjmują nazwany preset albo surową wartość.

type Size = 'small' | 'large' | 0 | 100;

function resize(s: Size): void {
  console.log('Resizing to', s);
}

resize('small');
resize(100);

Typy literałów logicznych

Nawet wartości logiczne mają typy literałów: true i false są zarówno typami, jak i wartościami. Pełny typ boolean jest w rzeczywistości unią true | false.

type AlwaysOn = true;

let enabled: AlwaysOn = true;
console.log('Enabled:', enabled);
// enabled = false; // Error: false not assignable to true

Literały ułatwiają dokumentowanie

Unia literałów pełni również funkcję dokumentacji. Każda osoba czytająca type Status = 'idle' | 'loading' | 'done' od razu zna wszystkie możliwe stany — bez zgadywania i bez porozrzucanych w kodzie magicznych ciągów znaków.

type Status = 'idle' | 'loading' | 'done';

function render(s: Status): string {
  return 'State is: ' + s;
}

console.log(render('loading'));

Łączenie literałów z innymi typami

Typy literałów można łączyć w unii z szerszymi typami. Często stosowany wzorzec to 'auto' | number, oznaczający specjalne słowo kluczowe 'auto' albo dowolną liczbę.

type Width = 'auto' | number;

function setWidth(w: Width): void {
  console.log('Width:', w);
}

setWidth('auto');
setWidth(320);

Literały jako nazwane stałe

Typy literałów świetnie współpracują z nazwanymi stałymi. Typ należy zdefiniować raz, używać go ponownie w całym kodzie i bezpiecznie przeprowadzać refaktoryzację. Kompilator dba o spójność każdego użycia.

type Theme = 'light' | 'dark';

const DEFAULT_THEME: Theme = 'dark';

function applyTheme(t: Theme): void {
  console.log('Applying', t, 'theme');
}

applyTheme(DEFAULT_THEME);

Szybkie sprawdzenie

Proszę sprawdzić, czy rozumieją Państwo typy literałów.

Podsumowanie: typy literałów

Dowiedzieli się Państwo, że:

  • Typy literałów reprezentują jedną dokładną wartość, na przykład 'north' lub 6.
  • Połączenie literałów za pomocą | tworzy skończoną unię dozwolonych wartości.
  • Działają one dla ciągów znaków, liczb i wartości logicznych oraz można je łączyć z szerszymi typami, takimi jak 'auto' | number.
  • Używane jako parametry funkcji, zapewniają autouzupełnianie i odrzucają nieprawidłowe dane wejściowe podczas kompilacji.

Następnie przyjrzymy się temu, jak TypeScript rozstrzyga, czy użyć typu literału, czy typu poszerzonego.

type Direction = 'north' | 'south' | 'east' | 'west';
type Dice = 1 | 2 | 3 | 4 | 5 | 6;

function describe(d: Direction, n: Dice): string {
  return 'Go ' + d + ' ' + n + ' steps';
}

console.log(describe('north', 3));

Często zadawane pytania

Czy lekcja „Typy literałów stringów i liczb” jest bezpłatna?

Tak — pełny tekst „Typy literałów stringów i liczb” 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 „Typy literałów stringów i liczb”?

Ograniczaj wartości do dokładnie określonych stringów i liczb za pomocą typów literałów Ć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 „Typy literałów stringów i liczb”?

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. Typy literałów stringów i liczb
  2. Literały boolean i wnioskowanie typów literałów
  3. Asercje const z użyciem as const
  4. Łączenie literałów w unie
← Powrót do TypeScript Academy