উভয়ই ডেটার আকৃতি বর্ণনা করে এবং প্রায়শই বিনিময়যোগ্য, কিন্তু তাদের বিভিন্ন ক্ষমতা রয়েছে।
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 আকৃতি এবং public APIs এর জন্য interface ব্যবহার করুন (ভাল error messages, extensible, mergeable), এবং যখন আপনার unions, tuples, বা অন্যান্য type operations প্রয়োজন তখন type ব্যবহার করুন। সামঞ্জস্যের জন্য একটি ডিফল্ট হিসাবে একটি চয়ন করুন — অনেক টিম objects এর জন্য interface ডিফল্ট করে এবং শুধুমাত্র যখন এর অতিরিক্ত শক্তি প্রয়োজন তখনই type ব্যবহার করে।