दुवै डेटाको आकार वर्णन गर्छन् र प्रायः एकअर्कको साथ विनिमय गरिन्छ, तर तिनीसँग विभिन्न क्षमताहरू छन्।
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 तरिका हो, जसमा तेस्रो-पक्ष लाइब्रेरी प्रकार बढाउने समावेश छ।
interface Admin extends User { role: string; } // interface
type Admin2 = User & { role: string }; // type uses intersection
सामान्य संम्मेलन: object आकार र सार्वजनिक APIs को लागि interface प्रयोग गर्नुहोस् (राम्रो त्रुटि संदेश, विस्तारयोग्य, मर्ज गर्न सकिने), र type जब तपाईंलाई unions, tuples, वा अन्य type अपरेशन चाहिन्छ। स्थिरताको लागि एकलाई डिफल्टको रूपमा चयन गर्नुहोस् — धेरै टीमहरू objects को लागि interface लाई डिफल्ट गर्छन् र केवल तब type मा जान्छन् जब यसको अतिरिक्त शक्ति आवश्यक हुन्छ।