Begge beskriver dataformen og er ofte utskiftbare, men de har ulike muligheter.
ts
interface User { name: string; age: number; }
type User2 = { name: string; age: number; };
Begge beskriver dataformen og er ofte utskiftbare, men de har ulike muligheter.
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 object/function-former.
interface kan gjø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 støtter declaration merging (flere deklarasjoner kombineres) og er den idiomatiske måten å utvide/utfylle på, inkludert utfylling av typer fra tredjepartsbiblioteker.
interface Admin extends User { role: string; } // interface
type Admin2 = User & { role: string }; // type uses intersection
En vanlig konvensjon: bruk interface for object-former og offentlige APIer (bedre feilmeldinger, utvidbar, sammenslåbar), og type når du trenger unions, tuples, eller andre type-operasjoner. Velg ett som standard for konsistens — mange team bruker som standard interface for objekter og griper til type kun når dets ekstra kraft er nødvendig.