Oba opisujeta obliko podatkov in sta pogosto zamenljiva, vendar imata različne zmogljivosti.
interface User { name: string; age: number; }
type User2 = { name: string; age: number; };
Oba opisujeta obliko podatkov in sta pogosto zamenljiva, vendar imata različne zmogljivosti.
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 je splošni alias za kateri koli tip — primitive, unions, tuples, mapped types. interface opisuje samo oblike object/function.
interface naredi, česar type ne moreinterface Box { width: number; }
interface Box { height: number; } // declaration merging — both merge into one
// Box now has width AND height
Interfaces podpirajo declaration merging (več deklaracij se združi) in so idiomatičen način za razširitev/dopolnitev, vključno s supplementiranjem tipov knjižnic tretjih oseb.
interface Admin extends User { role: string; } // interface
type Admin2 = User & { role: string }; // type uses intersection
Običajna konvencija: uporabljajte interface za oblike object in javne API-je (boljša sporočila o napakah, razširljivo, zlivljivo) in type kadar potrebujete unions, tuples ali druge operacije tipov. Izberite enega kot privzeto za skladnost — številne ekipe uporabljajo interface kot privzeto za objekte in se poslužujejo type le kadar je potrebna njegova dodatna moč.