दोनों डेटा के आकार का वर्णन करते हैं और अक्सर एक-दूसरे के लिए विनिमेय होते हैं, लेकिन उनकी अलग-अलग क्षमताएं होती हैं।
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 आकार और सार्वजनिक APIs के लिए interface का उपयोग करें (बेहतर त्रुटि संदेश, विस्तारणीय, विलय योग्य), और type का उपयोग करें जब आपको unions, tuples, या अन्य प्रकार के संचालन की आवश्यकता हो। सुसंगतता के लिए एक को डिफ़ॉल्ट के रूप में चुनें — कई टीमें objects के लिए interface को डिफ़ॉल्ट करती हैं और केवल तभी type का उपयोग करती हैं जब उसकी अतिरिक्त शक्ति की आवश्यकता होती है।
विस्तृत उत्तरों के साथ IT इंटरव्यू प्रश्नों की एक लाइब्रेरी — जूनियर से सीनियर तक।
दान करें