Begge beskriver formen på data og er ofte udskiftelige, men de har forskellige muligheder.
interface User { name: string; age: number; }
type User2 = { name: string; age: number; };
Begge beskriver formen på data og er ofte udskiftelige, men de har forskellige muligheder.
interface User { name: string; age: number; }
type User2 = { name: string; age: number; };
typeinterfacetype ID = string | number; // unions
type Pair = [number, number]; // tuples
type Name = User["name"]; // indexed/mapped/conditional types
type Nullable<T> = T | null; // wrap any type
type er et generelt alias for enhver type — primitiver, unions, tuples, mapped types. interface beskriver kun objekt-/funktionsformer.
interface kan gøre, som type ikke kaninterface Box { width: number; }
interface Box { height: number; } // declaration merging — both merge into one
// Box now has width AND height
Interfaces understøtter declaration merging (flere deklarationer kombineres) og er den idiomatiske måde at udvide/augmentere på, inklusive augmentering af tredjepartsbibliotektyper.
interface Admin extends User { role: string; } // interface
type Admin2 = User & { role: string }; // type uses intersection
En almindelig konvention: brug interface til objektformer og offentlige API'er (bedre fejlmeddelelser, udvidelsesbar, sammenlægbar) og type når du har brug for unions, tuples eller andre typeoperationer. Vælg en som standard for konsistens — mange teams defaulter til interface for objekter og griber til type kun når dets ekstra kraft er nødvendig.