Zote zinaeleza sura ya data na mara nyingi zinaweza kutenganishwa, lakini zina uwezo tofauti.
interface User { name: string; age: number; }
type User2 = { name: string; age: number; };
Zote zinaeleza sura ya data na mara nyingi zinaweza kutenganishwa, lakini zina uwezo tofauti.
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 ni alias ya jumla kwa aina yoyote — primitives, unions, tuples, mapped types. interface inaeleweza tu sura za kitu/kazi.
interface kinachoweza kufanya ambacho type haiweziinterface Box { width: number; }
interface Box { height: number; } // declaration merging — both merge into one
// Box now has width AND height
Interfaces zinasaidia declaration merging (deklarasiti nyingi zinaunganisha) na ni njia ya idiomatic kwa kupanua/kuongeza, ikiwa ni pamoja na kuongeza aina za maktaba ya wahanga wengine.
interface Admin extends User { role: string; } // interface
type Admin2 = User & { role: string }; // type uses intersection
Konvensheni ya kawaida: tumia interface kwa sura za kitu na API za umma (ujumbe wa hitilafu mzuri, wa kupanua, wa kuchanganya) na type wakati unahitaji unions, tuples, au operesheni zingine za aina. Chagua moja kama chaguo-msingi kwa ajili ya uthabiti — timu nyingi zinachagua interface kwa vitu na kufikia type tu wakati nguvu yake ya ziada inahitajika.