TypeScript Academy · Lektion

Interface eller type: Hvornår skal de bruges

Vælg mellem interface og type i forskellige situationer

Lektion 4 af 413 trin

Interface eller type: Hvornår skal de bruges 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.

Velkommen

Både `interface` og `type` beskriver objekters struktur. De ligner hinanden, men har vigtige forskelle. Denne lektion hjælper dig med at vælge den rigtige.

Ligheder

Begge kan beskrive objekters struktur, indeholde valgfrie og skrivebeskyttede egenskaber, bruges som typer for funktionsparametre og understøtte generiske typer.
interface A { x: number; }
type B = { x: number; };
// Both describe the same shape

Vigtig forskel: Sammenlægning af deklarationer

Grænseflader understøtter sammenlægning af deklarationer. Det gør typealiaser ikke – hvis du erklærer et typealias igen, opstår der en fejl.
interface Config { host: string; }
interface Config { port: number; } // OK — merged

type Settings = { host: string; };
// type Settings = { port: number; }; // Error

Vigtig forskel: Unioner og intersektioner

Typealiaser kan beskrive unioner, intersektioner, primitive typer og tupler. Grænseflader kan kun beskrive objekters struktur.
type ID = string | number;        // union — only with type
type Nullable<T> = T | null;       // union — only with type
type Point = [number, number];     // tuple — only with type

Vigtig forskel: Beregnede egenskaber

Typealiaser kan bruge afbildede og betingede typer til at beregne deres struktur. Grænseflader kan ikke bruge disse direkte.
type ReadonlyUser = Readonly<{ name: string; age: number }>; // mapped type
type Keys = keyof User; // only with type

Brug af interface til klassekontrakter

Grænseflader integreres naturligt med klasser via `implements`. Det sikrer, at en klasse leverer bestemte egenskaber og metoder.
interface Repository<T> {
  findById(id: number): T | null;
  save(item: T): void;
}
class UserRepo implements Repository<User> { /* ... */ }

Ydeevne: interface kontra type

Internt gemmer TypeScript resultaterne af kontrol af grænsefladestrukturer mere effektivt end komplekse typealiasudtryk. Brug derfor helst en grænseflade til store objekttyper.

Fejlmeddelelserne er forskellige

Når der opstår et typemismatch, viser grænseflader ofte grænsefladens navn i fejl, mens typealiaser viser den udfoldede struktur. Fejl i grænseflader er normalt nemmere at læse.

TypeScripts officielle anbefaling

TypeScript-teamet anbefaler, at du bruger `interface`, indtil du får brug for funktioner, der kræver `type`. Det er deres dokumenterede bedste praksis.

Konsistens i teamet er vigtigst

Mange teams vælger én af dem og bruger den overalt for at sikre konsistens. Det kan være forvirrende at blande dem frit i ét projekt. En stilguide hjælper.

Opsummerende beslutningstabel

Brug interface til: objekter, klasser og biblioteksudvidelse. Brug type til: unioner, intersektioner, tupler, primitive typer, afbildede typer og betingede typer.
// interface
interface User { name: string; age: number; }

// type (union)
type ID = string | number;

// type (tuple)
type Coord = [number, number];

Hurtig kontrol

Hvilken konstruktion kræves for at oprette en unionstype som `string | number`?

Opsummering

Brug interface til objekters struktur, klassekontrakter og biblioteksudvidelse. Brug type til unioner, intersektioner, tupler og beregnede typer. Hvis du er i tvivl, anbefaler TypeScript-teamet interface til objekters struktur.
Gratis at komme i gang

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 “Interface eller type: Hvornår skal de bruges” gratis?

Ja — hele teksten til “Interface eller type: Hvornår skal de bruges” 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 “Interface eller type: Hvornår skal de bruges”?

Vælg mellem interface og type i forskellige situationer 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 “Interface eller type: Hvornår skal de bruges”?

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

  1. Definition af objekters struktur med interfaces
  2. Typealiaser til komplekse typer
  3. Udvidelse og sammenlægning af interfaces
  4. Interface eller type: Hvornår skal de bruges
← Tilbage til TypeScript Academy