બંને ડેટાની આકાર વર્ણવે છે અને ઘણીવાર એક બીજાને બદલીને વાપરી શકાય છે, પરંતુ તેમની વિવિધ ક્ષમતાઓ છે.
interface User { name: string; age: number; }
type User2 = { name: string; age: number; };
બંને ડેટાની આકાર વર્ણવે છે અને ઘણીવાર એક બીજાને બદલીને વાપરી શકાય છે, પરંતુ તેમની વિવિધ ક્ષમતાઓ છે.
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 એ કોઈપણ પ્રકારનું સામાન્ય alias છે — primitives, unions, tuples, mapped types. interface માત્ર object/function આકારોનું વર્ણન કરે છે.
interface શું કરી શકે છે કે જે type કરી શકતું નથીinterface Box { width: number; }
interface Box { height: number; } // declaration merging — both merge into one
// Box now has width AND height
Interfaces declaration merging સપોર્ટ કરે છે (બહુવિધ ઘોષણાઓ મર્જ થાય છે) અને વિસ્તૃત/વધારવાનો આદર્શ માર્ગ છે, જેમાં તૃતીય પક્ષના લાઇબ્રેરી પ્રકારોને વધારવાનો સમાવેશ થાય છે.
interface Admin extends User { role: string; } // interface
type Admin2 = User & { role: string }; // type uses intersection
સામાન્ય સંમેલન: object આકારો અને જાહેર APIઓ માટે interface વાપરો (વધુ સારા ભૂલ સંદેશાઓ, વિસ્તારણીય, મર્જ કરી શકાય), અને type જ્યારે તમને unions, tuples, અથવા અન્ય પ્રકાર કામગીરીની જરૂર હોય. સુસંગતતા માટે એક ડિફોલ્ટ તરીકે પસંદ કરો — ઘણી ટીમો objects માટે interface પર ડિફોલ્ટ કરે છે અને માત્ર type તક તેની વધારાની શક્તির જરૂર હોય તો તેને વાપરે છે.