const-assertions og as const
Brug as const til præcist at udlede literal- og tuple-typer
const-assertions og as const er en gratis TypeScript Academy-lektion på CoddyKit. Dette er lektion 4 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i TypeScript Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. TypeScript Academy-kurset indeholder 4 lektioner i alt.
Hvad er as const?
as const er en typeassertion, der fortæller TypeScript, at et udtryk skal have de mest specifikke mulige literaltyper, og at alle egenskaber skal være readonly.
const colors = ["red", "green", "blue"] as const;
// type: readonly ["red", "green", "blue"]Forhindring af typeudvidelse med as const
Uden as const udvides strengværdier i arrays og objekter til string. Med det forbliver de deres literaltyper.
const dir1 = { direction: "left" };
// dir1.direction: string
const dir2 = { direction: "left" } as const;
// dir2.direction: "left"as const på objektliteraler
Alle egenskaber i et objekt med as const bliver readonly og bevarer deres literaltype rekursivt.
const theme = {
color: "dark",
sizes: { sm: 8, md: 16 },
} as const;
// theme.color: "dark", theme.sizes.sm: 8 (all readonly)as const til tuppeltyper
Arrays med as const bliver til readonly-tupler med literaltyper for elementerne — nyttigt til at definere faste argumentlister.
const args = [1, "hello", true] as const;
// type: readonly [1, "hello", true]Udledning af uniontyper fra as const
Et almindeligt mønster: Definér et as const-array med værdier, og udled derefter en uniontype fra det ved hjælp af typeof og indekseret adgang.
const STATUSES = ["pending", "active", "done"] as const;
type Status = typeof STATUSES[number];
// type Status = "pending" | "active" | "done"as const i funktionsargumenter
Du kan bruge as const inline, når du kalder funktioner, for at bevare literaltyper gennem kaldgrænsen.
function setMode(mode: "dark" | "light") {}
setMode("dark" as const); // safe, preserves literalRekursiv readonly
as const anvender Readonly rekursivt. Indlejrede objekter og arrays bliver alle readonly, så dybe ændringer forhindres.
const config = { db: { host: "localhost", port: 5432 } } as const;
// config.db.port = 5433; // Error: readonlyas const kontra Object.freeze
as const er en assertion ved kompilering — den beskytter ikke under kørsel. Object.freeze fungerer under kørsel. De har supplerende roller.
const obj = Object.freeze({ x: 1 }); // runtime immutability
const obj2 = { x: 1 } as const; // compile-time literal typesConst-assertioner kontra typeannoteringer
En typeannotering udvider typen: const x: string = "hi" får typen string. as const indsnævrer typen: const x = "hi" as const får typen "hi".
const a: string = "hi"; // type: string
const b = "hi" as const; // type: "hi"Praktisk brug: enum-lignende objekter
Mange kodebaser bruger objekter med as const som et alternativ til enum, så de undgår enum-problemer og samtidig bevarer typesikkerheden.
const Direction = { Up: "UP", Down: "DOWN" } as const;
type Direction = typeof Direction[keyof typeof Direction];
// "UP" | "DOWN"Opsummering: as const
as const får TypeScript til at udlede literaltyper og behandle alle egenskaber som readonly. Det er afgørende for at udlede præcise unionstyper fra arrays og opbygge sikre konfigurationsobjekter.
Hurtigt tjek
Hvad gør as const ved et array?
Det har du lært
as const er et stærkt værktøj til at fastholde literaltyper, oprette readonly-strukturer og udlede præcise unionstyper fra arrays. Det er en grundsten i avancerede TypeScript-mønstre.
Lær TypeScript med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 101
- Lektioner
- 352
Ofte stillede spørgsmål
Er lektionen “const-assertions og as const” gratis?
Ja — hele teksten til “const-assertions og as const” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af TypeScript Academy-kurset, skal du opgradere til CoddyKit PRO. TypeScript Academy-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “const-assertions og as const”?
Brug as const til præcist at udlede literal- og tuple-typer Du øver dig i TypeScript Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på TypeScript Academy?
Der kræves ingen tidligere erfaring. TypeScript Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 4 af 4.
Hvor lang tid tager lektionen “const-assertions og as const”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne TypeScript Academy-lektion?
Ja. Alle TypeScript Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Mekanismer for typeudvidelse og -indsnævring
- Kontekstuel typning: Inferens ud fra kontekst
- Freshness og kontrol af overskydende egenskaber
- const-assertions og as const