दोन्ही डेटाचा आकार वर्णन करतात आणि बहुतेक वेळा एकमेकांच्या जागी वापरले जाऊ शकतात, परंतु त्यांच्या भिन्न क्षमता आहेत.
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 समर्थन करतात (अनेक घोषणा एकत्र होतात) आणि विस्तार/वर्धन करण्याचा idiomatic मार्ग आहेत, ज्यात third-party library प्रकार वर्धित करणे समाविष्ट आहे.
interface Admin extends User { role: string; } // interface
type Admin2 = User & { role: string }; // type uses intersection
सामान्य संमेलन: object shapes आणि public APIs साठी interface वापरा (अधिक उत्तम error messages, विस्तारयोग्य, एकत्र करण्यायोग्य), आणि type जेव्हा आपल्याला unions, tuples, किंवा इतर type operations आवश्यक असेल. सुसंगतताच्या लिए एक डिफॉल्ट म्हणून निवडा — अनेक teams objects साठी interface डिफॉल्ट करतात आणि फक्त तेव्हाच type कडे जातात जेव्हा त्याची अतिरिक्त शक्ती आवश्यक असते.