Typowanie wzorców tekstowych (parametry tras, nazwy zdarzeń)
Ograniczanie ciągów znaków za pomocą typów literałów szablonowych: wzorce parametrów tras, przestrzenie nazw zdarzeń i bezpieczne konstruktory
Typowanie wzorców tekstowych (parametry tras, nazwy zdarzeń) to bezpłatna lekcja TypeScript Academy na CoddyKit. To lekcja 3 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: Modelowanie formatów napisów na poziomie typów. Typy literałów szablonowych pozwalają wymuszać wzorce, takie jak "/users/:id" lub "user:created", zachowując przy tym wysoką ergonomię pracy (DX).
- Ograniczanie według prefiksu lub sufiksu
- Wyodrębnianie fragmentów za pomocą
infer - Tworzenie bezpiecznych funkcji pomocniczych
Parametry ścieżek
Prosty szablon ścieżki pozwala wywnioskować nazwę parametru; w przypadkach niespełniających reguły należy użyć never.
type Route = `/${string}`
type RouteWithParam = `/${string}/:${string}`
type ParamOf<R extends string> = R extends `${string}/:${infer P}` ? P : never
// examples
type A = ParamOf<"/users/:id"> // "id"
type B = ParamOf<"/posts/:slug"> // "slug"Bezpieczna funkcja pomocnicza dla ścieżek
Bezpieczny konstruktor: Funkcja pomocnicza przyjmuje szablony zaczynające się od "/"; pozostałe są odrzucane podczas kompilacji.
type Path<R extends string> = R extends `/${string}` ? R : never
function route<R extends Path<R>>(r: R) { return r }
const ok = route("/users/:id") // ok
// const bad = route("users") // error: must start with "/"Przestrzenie nazw zdarzeń
Należy ograniczyć prefiksy (np. user:, order:) i za pomocą typów blokować nieprawidłowe nazwy pól.
type EventName = `user:${string}` | `order:${string}`
function on<E extends EventName>(name: E, cb: (data: unknown) => void) {
// ... register listener
}
on("user:created", d => {}) // ok
// on("payment:done", d => {}) // error: not an EventNameRozdzielanie zdarzenia
Wyodrębnij oba fragmenty za pomocą infer i przekształć je w typowane pola; nieprawidłowe formaty nie będą mogły wystąpić.
type SplitEvent<E extends string> = E extends `${infer Scope}:${infer Action}` ? { scope: Scope; action: Action } : never
type S = SplitEvent<"user:created"> // { scope: "user"; action: "created" }
type Bad = SplitEvent<"oops"> // neverWskazówki
Wskazówki:
Ograniczenia powinny być minimalne; zbyt restrykcyjne szablony wymuszają refaktoryzację.
Reguły warto łączyć w jednym miejscu za pomocą funkcji Builder.
Nie należy zapominać o zmapowaniu bazowego string na unknown i zweryfikowaniu go w czasie działania.
Sprawdzenie przestrzeni nazw
Szybkie sprawdzenie: Który wzorzec ogranicza nazwy zdarzeń do dwóch przestrzeni nazw?
Podsumowanie
Podsumowanie: Typy literałów szablonowych ograniczają napisy tworzone według wzorców; infer służy do wyodrębniania fragmentów; bezpieczne funkcje Builder pozwalają tworzyć poprawne wartości.
Często zadawane pytania
Czy lekcja „Typowanie wzorców tekstowych (parametry tras, nazwy zdarzeń)” jest bezpłatna?
Tak — pełny tekst „Typowanie wzorców tekstowych (parametry tras, nazwy zdarzeń)” 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 „Typowanie wzorców tekstowych (parametry tras, nazwy zdarzeń)”?
Ograniczanie ciągów znaków za pomocą typów literałów szablonowych: wzorce parametrów tras, przestrzenie nazw zdarzeń i bezpieczne konstruktory Ć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 3 z 3.
Ile czasu zajmuje lekcja „Typowanie wzorców tekstowych (parametry tras, nazwy zdarzeń)”?
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 mapowane z +/-readonly i +/-?
- Zmiana mapowania kluczy i typy literałów szablonowych
- Typowanie wzorców tekstowych (parametry tras, nazwy zdarzeń)