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')); // ErrorTypy 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 trueLiterał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'lub6. - 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
- Typy literałów stringów i liczb
- Literały boolean i wnioskowanie typów literałów
- Asercje const z użyciem as const
- Łączenie literałów w unie