இரண்டும் தரவின் வடிவத்தை விவரிக்கிறது மற்றும் பெரும்பாலும் ஒன்றுக்கொன்று மாற்றாக பயன்படுத்தப்படும், ஆனால் அவை வெவ்வேறு திறன்களைக் கொண்டுள்ளன.
interface User { name: string; age: number; }
type User2 = { name: string; age: number; };
இரண்டும் தரவின் வடிவத்தை விவரிக்கிறது மற்றும் பெரும்பாலும் ஒன்றுக்கொன்று மாற்றாக பயன்படுத்தப்படும், ஆனால் அவை வெவ்வேறு திறன்களைக் கொண்டுள்ளன.
interface User { name: string; age: number; }
type User2 = { name: string; age: number; };
type இதை செய்ய முடியும் ஆனால் interface இதை செய்ய முடியாதுtype 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 என்பது எந்த வகையின் உபநாமம் — 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 வடிவங்கள் மற்றும் பொது API களுக்கு interface பயன்படுத்தவும் (சிறந்த பிழை செய்திகள், விரிவாக்கத்திற்கு தகுந்த, merge செய்யக்கூடிய) மற்றும் unions, tuples அல்லது மற்ற வகை செயல்பாடுகள் தேவைப்படும் போது type பயன்படுத்தவும். நிலைத்தன்மைக்கு ஒரு இயல்புநிலையாக தேர்ந்தெடுக்கவும் — பல குழுக்கள் objects க்கு interface ஐ விரும்புகின்றன மற்றும் அதன் கூடுதல் சக்தி தேவைப்படும் போது மட்டுமே type ஐ பயன்படுத்துகின்றன.