2.1 বিল্ট-ইন টাইপ
এই অধ্যায়ে আমরা টাইপস্ক্রিপ্টের বিল্ট-ইন টাইপ নিয়ে আলোচনা করবো, আমরা ইতিমধ্যেই জেনেছি টাইপস্ক্রিপ্ট জাভাস্ক্রিপ্টের একটি সুপার সেট সুতরাং টাইপস্ক্রিপ্ট জাভাস্ক্রিপ্টের বিল্ট-ইন ডাটা ইনহেরিট করে এবং কিছু অতিরিক্ত ডাটা টাইপ যুক্ত করে।
এখন আমরা দেখবো জাভাস্ক্রিপ্টে কি কি বিল্ট-ইন ডাটা টাইপ আছেযেমনঃ number, string, boolean, null, undefined and object আবার টাইপস্ক্রিপ্ট জাভাস্ক্রিপ্টের এই টাইপ গুলোর সাথে আরো কিছু নতুন টাইপ যুক্ত করেছে সেগুলো হলঃ any, unknown, never, enum and tuple
আসুন আমরা কয়েকটা উদাহরণ দেখবো যে কিভাবে এই টাইপ গুলো ব্যাবহার করে আমরা আমাদের ভ্যারিয়েবল ডিফাইন করতে পারি।
let sales: number = 3000;
let course: string = 'TypeScript';
let is_published: boolean = true;
এখানে আমরা তিনটা ভ্যারিয়েবল ডিক্লার করেছি এবং এদের টাইপ গুলো ডিফাইন করে বলে দিয়েছি যে sales, course, is_published যথাক্রমে নাম্বার , স্ট্রিং এবং বুলিয়ান টাইপ।
এখন আমরা যদি sales ভ্যারিয়েবল এর ভিতরে কোনো স্ট্রিং ভ্যালু অ্যাসাইন করি তাহলে টাইপস্ক্রিপ্ট কম্পাইলার আমাদের কম্পাইল টাইম এরর দেখাবে।
let sales: number = 3000;
let course: string = 'TypeScript';
let is_published: boolean = true;
sales = "3000"; //error Type 'string' is not assignable to type 'number'
is_published = 3000; //error Type 'number' is not assignable to type 'boolean'.
course = true // error Type 'boolean' is not assignable to type 'string'.
তাহলে আমরা দেখলাম কোনো স্ট্রিং টাইপ ভ্যারিয়েবল এর ভিতরে যদি ভিন্ন কোনো টাইপের ডাটা অ্যাসাইন করি তাহলে কম্পাইলার আমাদের এরর দেখাবে।
আবার এই সকল ডাটা টাইপ কে দুই ভাগে ভাগ করা যায় যেমন :
- প্রিমিটিভ ডাটা টাইপ
- নন-প্রিমিটিভ ডাটা টাইপ
প্রিমিটিভ ডাটা টাইপ
প্রিমিটিভ ডাটা টাইপ হল একদম ব্যাসিক ডাটা টাইপ যেটা আসলে immutable, মানে এর মান কখনো পরিবর্তন হয়না, আসলে পরিবর্তন হয়না বলতে এর বর্তমান ভ্যালু টা একই থাকে। আসুন আমরা একটা উদাহরণ দেখি তাহলে ভালোভাবে বিষয়টা বুঝতে পারবো।
let sample: string = 'immutable'
console.log(sample)
sample[0] = 'V' //changing the first letter to V
console.log(sample)
sample = 'mutable'
console.log(sample)
//output
immutable
immutable
mutable
শেষ আউটপুট mutable আসার কারণ হচ্ছে আমরা বর্তমান ভ্যালুটাকে মডিফাই না করে ডিরেক্ট নতুন ভ্যালু অ্যাসাইন করেছি।
উদাহরণ দেখে আমরা অবশ্যই বুঝতে পেরেছি যে আসলে immutable জিনিস টা কি। আসুন এখন দেখি কত ধরেণের প্রিমিটিভ ডাটা টাইপ আছে :
- Number
- String
- Boolean
- Undefined
- Null
- Symbol
নন-প্রিমিটিভ ডাটা টাইপ
আমরা দেখেছি প্রিমিটিভ ডাটা টাইপ হচ্ছে immutable যেটার ডাটা আসলে আমরা মডিফাই করতে পারিনা কিন্তু নন-প্রিমিটিভ ডাটা টাইপ হচ্ছে মিউটেবল, যেমন অবজেক্ট, আমরা চাইলেই অবজেক্ট এর ভ্যালু মডিফাই করতে পারি। চলুন একটা উদাহরণ দেখে আসি
type Person{
name: string;
age: number;
city: string
}
let person: Person= {
name: "John",
age: 30,
city: "New York"
};
person.name = "Mahmud" //modify name here
person.city = "Dhaka" // modify city here
console.log(person.name); // Output: Mahmud
console.log(person.age); // Output: 30
console.log(person.city); // Output: Dhaka
let fruits: string[] = ["apple", "banana", "orange"];
console.log(fruits[0]); // Output: apple
fruits[0] = "mango"; // replace apple to mango in index 0
console.log(fruits[0]); // Output: mango
এখানে আমরা person অবজেক্টের টাইপ Person ডিফাইন করেছি, এটাকে আসলে টাইপ অ্যালিয়াস বলে, আমরা পরবর্তি অধ্যায়ে টাইপ অ্যালিয়াস নিয়ে বিস্তারিত আলোচনা করবো।
তাহলে আমরা দেখ্লাম Array ও একটি নন-প্রিমিটিভ ডাটা টাইপ। আরো অনেক ধরণের নন-প্রিমিটিভ ডাটা টাইপ নিচে দেওয়া হল :
- Object
- Array
- Function
- Class
- Tuple
- Interface
- Enum
- Generic
- Decorators