TypeScript Academy · leksjon

const-assertions og as const

Bruk as const for å utlede litteral- og tupletyper nøyaktig.

Leksjon 4 av 413 trinn

const-assertions og as const er en gratis leksjon i TypeScript Academy på CoddyKit. Dette er leksjon 4 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i TypeScript Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i TypeScript Academy inneholder totalt 4 leksjoner.

Hva er as const?

as const er en typepåstand som forteller TypeScript at det skal utlede de mest spesifikke literaltypene som er mulige for et uttrykk, og gjøre alle egenskaper readonly.

const colors = ["red", "green", "blue"] as const;
// type: readonly ["red", "green", "blue"]

Hindre typeutvidelse med as const

Uten as const utvides strengverdier i arrayer og objekter til string. Med as const beholdes de som literaltyper.

const dir1 = { direction: "left" };
// dir1.direction: string

const dir2 = { direction: "left" } as const;
// dir2.direction: "left"

as const på objektliteraler

Alle egenskaper i et objekt med as const blir readonly og beholder literaltypen sin rekursivt.

const theme = {
  color: "dark",
  sizes: { sm: 8, md: 16 },
} as const;
// theme.color: "dark", theme.sizes.sm: 8 (all readonly)

as const for tuppeltyper

Arrayer med as const blir readonly-tupler med literaltyper for elementene – nyttig for å definere faste argumentlister.

const args = [1, "hello", true] as const;
// type: readonly [1, "hello", true]

Avlede uniontyper fra as const

Et vanlig mønster er å definere en as const-array med verdier og deretter avlede en uniontype fra den ved hjelp av typeof og indeksert tilgang.

const STATUSES = ["pending", "active", "done"] as const;
type Status = typeof STATUSES[number];
// type Status = "pending" | "active" | "done"

as const i funksjonsargumenter

De kan bruke as const direkte ved funksjonskall for å bevare literaltyper gjennom kallgrensen.

function setMode(mode: "dark" | "light") {}
setMode("dark" as const); // safe, preserves literal

Rekursiv bruk av Readonly

as const bruker Readonly rekursivt. Alle nestede objekter og arrayer blir readonly, noe som hindrer endringer dypt i strukturen.

const config = { db: { host: "localhost", port: 5432 } } as const;
// config.db.port = 5433; // Error: readonly

as const kontra Object.freeze

as const er en typepåstand ved kompilering og gir ingen beskyttelse under kjøring. Object.freeze gjelder under kjøring. De to har komplementære roller.

const obj = Object.freeze({ x: 1 }); // runtime immutability
const obj2 = { x: 1 } as const;      // compile-time literal types

Const-assertions kontra typeannotasjoner

En typeannotasjon utvider typen: const x: string = "hi" gir typen string. as const innsnevrer typen: const x = "hi" as const gir "hi".

const a: string = "hi"; // type: string
const b = "hi" as const; // type: "hi"

Praktisk bruk: enum-lignende objekter

Mange kodebaser bruker objekter med as const som et alternativ til enum, slik at de unngår fallgruvene ved enum og samtidig beholder typesikkerheten.

const Direction = { Up: "UP", Down: "DOWN" } as const;
type Direction = typeof Direction[keyof typeof Direction];
// "UP" | "DOWN"

Oppsummering: as const

as const gjør at TypeScript utleder literaltyper og behandler alle egenskaper som readonly. Det er nødvendig for å utlede presise union-typer fra arrayer og bygge sikre konfigurasjonsobjekter.

Hurtigsjekk

Hva gjør as const med en array?

Dette har du lært

as const er et kraftig verktøy for å låse fast literaltyper, opprette readonly-strukturer og utlede presise union-typer fra arrayer. Det er en grunnleggende del av avanserte TypeScript-mønstre.

Gratis å komme i gang

Lær deg TypeScript med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
101
Leksjoner
352

Ofte stilte spørsmål

Er leksjonen «const-assertions og as const» gratis?

Ja – hele teksten i «const-assertions og as const» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av TypeScript Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i TypeScript Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «const-assertions og as const»?

Bruk as const for å utlede litteral- og tupletyper nøyaktig. Du øver på TypeScript Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med TypeScript Academy?

Ingen tidligere erfaring er nødvendig. TypeScript Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 4 av 4.

Hvor lang tid tar leksjonen «const-assertions og as const»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne TypeScript Academy-leksjonen?

Ja. Alle TypeScript Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Mekanismer for typeutvidelse og -innsnevring
  2. Kontekstuell typing: utledning fra kontekst
  3. Freshness og sjekk av overflødige egenskaper
  4. const-assertions og as const
← Tilbake til TypeScript Academy