Abu aprašo duomenų formą ir dažnai yra keičiami, bet turi skirtingas galimybes.
ts
interface User { name: string; age: number; }
type User2 = { name: string; age: number; };
Abu aprašo duomenų formą ir dažnai yra keičiami, bet turi skirtingas galimybes.
interface User { name: string; age: number; }
type User2 = { name: string; age: number; };
type, ko negali interfacetype 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 yra bendras alias bet kuriam tipui — primityviems, unijoms, kortelėms, susietiems tipams. interface aprašo tik objekto/funkcijos formas.
interface, ko negali typeinterface Box { width: number; }
interface Box { height: number; } // declaration merging — both merge into one
// Box now has width AND height
Sąsajos palaiko deklaracijos sumaišymą (kelios deklaracijos sujungiamos) ir yra idiomine praplėtimo/papildymo priemonė, įskaitant trečiųjų šalių bibliotekų tipų papildymą.
interface Admin extends User { role: string; } // interface
type Admin2 = User & { role: string }; // type uses intersection
Bendra konvencija: naudokite interface objektų formoms ir viešajam API (geresni klaidu pranešimai, išplečiamas, sujungiamas), o type kai jums reikalingos unijos, kortelės arba kiti tipo operacijos. Pasirinkite vieną kaip numatytąją nuoseklumui — daugelis komandų numatytą interface objektams ir siekia type tik kai reikalinga jo papildoma galia.