0Pricing
TypeScript Academy · Lekcja

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 literal

Rekurencyjne 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: readonly

as 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 types

Asercje 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

  1. Mechanizmy rozszerzania i zawężania typów
  2. Typowanie kontekstowe: wnioskowanie z kontekstu
  3. Świeżość i sprawdzanie nadmiarowych właściwości
  4. Asercje const i as const
← Powrót do TypeScript Academy