Asercje const i as const
Używaj as const, aby precyzyjnie wyprowadzać typy literałów i krotek.
Asercje const i as const 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.
Czym jest as const
as const to asercja typu, która nakazuje TypeScript wnioskować dla wyrażenia możliwie najbardziej szczegółowe typy literałowe oraz oznaczyć wszystkie właściwości jako readonly.
const colors = ["red", "green", "blue"] as const;
// type: readonly ["red", "green", "blue"]Zapobieganie rozszerzaniu za pomocą as const
Bez as const wartości tekstowe w tablicach i obiektach są rozszerzane do string. Z użyciem tego operatora zachowują swoje typy literałowe.
const dir1 = { direction: "left" };
// dir1.direction: string
const dir2 = { direction: "left" } as const;
// dir2.direction: "left"as const dla literałów obiektowych
Każda właściwość obiektu z as const staje się readonly i rekurencyjnie zachowuje swój typ literałowy.
const theme = {
color: "dark",
sizes: { sm: 8, md: 16 },
} as const;
// theme.color: "dark", theme.sizes.sm: 8 (all readonly)as const dla typów krotek
Tablice z as const stają się krotkami readonly z literałowymi typami elementów — jest to przydatne do definiowania stałych list argumentów.
const args = [1, "hello", true] as const;
// type: readonly [1, "hello", true]Wyprowadzanie typów unii z as const
Typowy wzorzec polega na zdefiniowaniu tablicy wartości z as const, a następnie wyprowadzeniu z niej typu unii za pomocą typeof i dostępu indeksowanego.
const STATUSES = ["pending", "active", "done"] as const;
type Status = typeof STATUSES[number];
// type Status = "pending" | "active" | "done"as const w argumentach funkcji
Można użyć as const bezpośrednio podczas wywoływania funkcji, aby zachować typy literałowe na granicy wywołania.
function setMode(mode: "dark" | "light") {}
setMode("dark" as const); // safe, preserves literalRekurencyjne readonly
as const stosuje Readonly rekurencyjnie. Zagnieżdżone obiekty i tablice stają się readonly, co zapobiega głębokim modyfikacjom.
const config = { db: { host: "localhost", port: 5432 } } as const;
// config.db.port = 5433; // Error: readonlyas const a Object.freeze
as const jest asercją wykonywaną podczas kompilacji i nie zapewnia ochrony w czasie działania. Object.freeze działa w czasie wykonywania. Mechanizmy te pełnią uzupełniające się funkcje.
const obj = Object.freeze({ x: 1 }); // runtime immutability
const obj2 = { x: 1 } as const; // compile-time literal typesAsercje const a adnotacje typów
Adnotacja typu poszerza typ: const x: string = "hi" nadaje typ string. as const zawęża typ: const x = "hi" as const nadaje typ "hi".
const a: string = "hi"; // type: string
const b = "hi" as const; // type: "hi"Praktyczne zastosowanie: obiekty przypominające enumy
W wielu bazach kodu obiekty z as const są używane jako alternatywa dla enumów, co pozwala uniknąć problemów z enumami przy zachowaniu bezpieczeństwa typów.
const Direction = { Up: "UP", Down: "DOWN" } as const;
type Direction = typeof Direction[keyof typeof Direction];
// "UP" | "DOWN"Podsumowanie: as const
as const sprawia, że TypeScript wnioskuje typy literałowe i traktuje wszystkie właściwości jako readonly. Jest niezbędne do wyprowadzania precyzyjnych typów unii z tablic oraz tworzenia bezpiecznych obiektów konfiguracyjnych.
Szybkie sprawdzenie
Co as const robi z tablicą?
Czego się nauczyłeś
as const to potężne narzędzie do utrwalania typów literałowych, tworzenia struktur tylko do odczytu oraz wyprowadzania precyzyjnych typów unii z tablic. Stanowi podstawę zaawansowanych wzorców TypeScript.
Często zadawane pytania
Czy lekcja „Asercje const i as const” jest bezpłatna?
Tak — pełny tekst „Asercje const i as const” 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 „Asercje const i as const”?
Używaj as const, aby precyzyjnie wyprowadzać typy literałów i krotek. Ć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 „Asercje const i as const”?
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
- Mechanizmy rozszerzania i zawężania typów
- Typowanie kontekstowe: wnioskowanie z kontekstu
- Świeżość i sprawdzanie nadmiarowych właściwości
- Asercje const i as const