TypeScript Academy · leksjon

Interface kontra type: Når bør du bruke hva

Velg mellom interface og type i ulike situasjoner.

Leksjon 4 av 413 trinn

Interface kontra type: Når bør du bruke hva 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.

Velkommen

Både `interface` og `type` beskriver objektstrukturer. De ligner på hverandre, men har viktige forskjeller. Denne leksjonen hjelper deg med å velge riktig alternativ.

Likheter

Begge kan beskrive objektstrukturer, inneholde valgfrie og skrivebeskyttede egenskaper, brukes som typer for funksjonsparametere og støtte generiske typer.
interface A { x: number; }
type B = { x: number; };
// Both describe the same shape

Viktig forskjell: sammenslåing av deklarasjoner

Grensesnitt støtter sammenslåing av deklarasjoner. Det gjør ikke typealiaser – det gir en feil å deklarere et typealias på nytt.
interface Config { host: string; }
interface Config { port: number; } // OK — merged

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

Viktig forskjell: unioner og snitt

Typealiaser kan beskrive unioner, snitt, primitive typer og tupler. Grensesnitt kan bare beskrive objektstrukturer.
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

Viktig forskjell: beregnede egenskaper

Typealiaser kan bruke mapped types og conditional types til å beregne strukturen sin. Grensesnitt kan ikke bruke disse direkte.
type ReadonlyUser = Readonly<{ name: string; age: number }>; // mapped type
type Keys = keyof User; // only with type

Bruk av interface for klassekontrakter

Grensesnitt fungerer naturlig sammen med klasser via `implements`. Dette sikrer at en klasse har bestemte egenskaper og metoder.
interface Repository<T> {
  findById(id: number): T | null;
  save(item: T): void;
}
class UserRepo implements Repository<User> { /* ... */ }

Ytelse: interface kontra type

Internt hurtigbufrer TypeScript kontroller av grensesnittstrukturer mer effektivt enn komplekse typealiasuttrykk. Foretrekk grensesnitt for store objekttyper.

Feilmeldinger er forskjellige

Når det oppstår en typekonflikt, viser grensesnitt ofte grensesnittnavnet i feilmeldinger, mens typealiaser viser den utvidede strukturen. Feil med grensesnitt er vanligvis lettere å lese.

TypeScripts offisielle anbefaling

TypeScript-teamet anbefaler å bruke `interface` til du trenger funksjoner som krever `type`. Dette er deres dokumenterte beste praksis.

Teamets konsistens er viktigst

Mange team velger én av dem og bruker den overalt for å være konsekvente. Det kan være forvirrende å blande begge fritt i ett prosjekt. En stilguide hjelper.

Beslutningstabell

Bruk interface for: objekter, klasser og biblioteksutvidelse. Bruk type for: unioner, snitt, tupler, primitive typer, mapped types og conditional types.
// interface
interface User { name: string; age: number; }

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

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

Rask sjekk

Hvilken konstruksjon kreves for å opprette en unionstype som `string | number`?

Oppsummering

Bruk interface for objektstrukturer, klassekontrakter og biblioteksutvidelse. Bruk type for unioner, snitt, tupler og beregnede typer. Når du er i tvil, er interface TypeScript-teamets anbefaling for objektstrukturer.
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 «Interface kontra type: Når bør du bruke hva» gratis?

Ja – hele teksten i «Interface kontra type: Når bør du bruke hva» 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 «Interface kontra type: Når bør du bruke hva»?

Velg mellom interface og type i ulike situasjoner. 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 «Interface kontra type: Når bør du bruke hva»?

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. Definere objekters struktur med grensesnitt
  2. Typealiaser for komplekse typer
  3. Utvidelse og sammenslåing av grensesnitt
  4. Interface kontra type: Når bør du bruke hva
← Tilbake til TypeScript Academy