Të dyja përshkruajnë formën e të dhënave dhe shpesh janë të ndërrueshme, por kanë aftësi të ndryshme.
interface User { name: string; age: number; }
type User2 = { name: string; age: number; };
Të dyja përshkruajnë formën e të dhënave dhe shpesh janë të ndërrueshme, por kanë aftësi të ndryshme.
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 është një alias i përgjithshëm për çdo tip — primitiva, unions, tuples, mapped types. interface përshkruan vetëm format e object/function.
interface që type nuk mundinterface Box { width: number; }
interface Box { height: number; } // declaration merging — both merge into one
// Box now has width AND height
Interfaces mbështesin declaration merging (më shumë deklarata kombinohen) dhe janë mënyra idiomatike për të zgjeruar/shtuar, përfshirë shtimin e tipave të bibliotekave të palëve të treta.
interface Admin extends User { role: string; } // interface
type Admin2 = User & { role: string }; // type uses intersection
Një konventë e zakonshme: përdorni interface për format e object dhe API-t publike (mesaje gabimi më të mira, të zgjërueshme, të bashkueshme) dhe type kur keni nevojë për unions, tuples ose operacione të tjera të tipave. Zgjidhni njërën si parazgjedhje për konsistencë — shumë ekipe parazgjidhin interface për objektet dhe i drejtzohen type vetëm kur fuqia e tij shtesë është e nevojshme.