টাইপস্ক্রিপ্টে ডেটা টাইপস

টাইপস্ক্রিপ্টে ডেটা টাইপস

এই প্রবন্ধটি টাইপস্ক্রিপ্টে ডেটা টাইপ সম্বন্ধে ব্যাখ্যা করে।

YouTube Video

টাইপস্ক্রিপ্টে ডেটা টাইপস

টাইপস্ক্রিপ্ট বিভিন্ন ধরনের ডেটা টাইপ সরবরাহ করে। এটি আপনাকে ভেরিয়েবল, ফাংশনের আর্গুমেন্ট এবং রিটার্ন মানের জন্য কঠোর টাইপ নির্ধারণ করতে সক্ষম করে। নিচে প্রধান ডেটা টাইপ এবং সেগুলোর ব্যবহার বর্ণনা করা হয়েছে।

প্রাথমিক প্রকারসমূহ

সংখ্যা টাইপ (number)

1let age: number = 25;
2console.log(age);          // Outputs: 25
3console.log(typeof age);    // Outputs: number
  • number হল একটি টাইপ যা পূর্ণসংখ্যা এবং দশমিক সহ সংখ্যাসূচক মান পরিচালনা করতে ব্যবহৃত হয়। কিছু নির্দিষ্ট সীমা অতিক্রমকারী মান পরিচালনা করলে Infinity বা NaN (Not-a-Number) তৈরি হতে পারে।
1// Decimal calculations
2console.log(0.1 + 0.2 === 0.3); // false
3console.log(0.1 + 0.2); // 0.30000000000000004
4
5// Calculations with large numbers
6console.log(9007199254740991 + 1); // correct value
7console.log(9007199254740991 + 2); // incorrect value
  • TypeScript-এ, সংখ্যা ভাসমান বিন্দু সংখ্যার হিসাবে উপস্থাপিত হয়। এটি গণনার ফলাফলে সামান্য বিভ্রান্তি সৃষ্টি করতে পারে।

  • যখন সঠিক গণনা প্রয়োজন, যেমন আর্থিক মান, তখন এই ধরনের রাউন্ডিং ত্রুটি এড়ানো জরুরি। উদাহরণস্বরূপ, আপনি BigInt বা toFixed() ব্যবহার করতে পারেন বা decimal.js এর মতো লাইব্রেরি ব্যবহার করে দশমিক স্থানগুলি সামঞ্জস্য করতে পারেন।

স্ট্রিং টাইপ (string)

string টাইপ টেক্সট বা স্ট্রিং ডেটার জন্য ব্যবহৃত হয়।

1let greeting: string = "Hello, TypeScript!";
2console.log(greeting);     // Outputs: Hello, TypeScript!
3console.log(typeof greeting);  // Outputs: string

বুলিয়ান (যৌক্তিক টাইপ)

boolean টাইপের দুটি মান থাকে: true বা false

1let isOpen: boolean = true;
2console.log(isOpen);       // Outputs: true
3console.log(typeof isOpen);    // Outputs: boolean

null এবং undefined

null একটি 'অস্তিত্বহীন মান'-কে বোঝায় এবং undefined একটি 'অনির্ধারিত মান'-কে বোঝায়।

1let emptyValue: null = null;
2let notDefined: undefined = undefined;
3
4console.log(emptyValue);       // Outputs: null
5console.log(typeof emptyValue);    // Outputs: object (JavaScript specification)
6
7console.log(notDefined);       // Outputs: undefined
8console.log(typeof notDefined);    // Outputs: undefined

Array

টাইপস্ক্রিপ্টে, আপনি অ্যারের উপাদানগুলোর টাইপ নির্ধারণ করতে পারেন। number[] একটি সংখ্যা সম্বলিত অ্যারে, এবং string[] একটি স্ট্রিং সম্বলিত অ্যারে।

1let numbers: number[] = [1, 2, 3, 4];
2console.log(numbers);        // Outputs: [1, 2, 3, 4]
3console.log(typeof numbers); // Outputs: object
4
5let words: string[] = ["TypeScript", "JavaScript"];
6console.log(words);          // Outputs: ["TypeScript", "JavaScript"]
7console.log(typeof words);   // Outputs: object

টাপল (Tuple)

টাপল হলো একটি অ্যারে যেখানে উপাদানগুলোর বিভিন্ন টাইপ থাকে।

1let person: [string, number] = ["Alice", 30];
2console.log(person);         // Outputs: ["Alice", 30]
3console.log(typeof person);  // Outputs: object

এনাম (Enum)

enum একটি নামযুক্ত কনস্ট্যান্ট সেট সংজ্ঞায়িত করে।

1enum Color {
2    Red,
3    Green,
4    Blue
5}
6
7let favoriteColor: Color = Color.Green;
8console.log(favoriteColor);  // Outputs: 1 (Defaults start from 0)
9console.log(typeof favoriteColor); // Outputs: number

any

any টাইপটি যেকোনো ধরনের মান ধারণ করতে পারে এবং টাইপ চেকিং নিষ্ক্রিয় করতে এটি ব্যবহৃত হয়।

1let anything: any = "Hello";
2console.log(anything);       // Outputs: Hello
3console.log(typeof anything);    // Outputs: string
4
5anything = 42;
6console.log(anything);       // Outputs: 42
7console.log(typeof anything);    // Outputs: number

ইউনিয়ন টাইপ (Union Type)

ইউনিয়ন টাইপ ব্যবহার করে, আপনি এমন ভেরিয়েবল তৈরি করতে পারেন যা একাধিক টাইপের একটি ধারণ করতে পারে।

1let identifier: number | string = "ID_12345";
2console.log(identifier);     // Outputs: ID_12345
3console.log(typeof identifier);  // Outputs: string
4
5identifier = 12345;
6console.log(identifier);     // Outputs: 12345
7console.log(typeof identifier);  // Outputs: number

সারসংক্ষেপ

  • number, string, boolean: মৌলিক টাইপসমূহ।
  • null, undefined: বিশেষ মান।
  • অ্যারে: টাইপ অ্যানোটেশনের সাথে একটি অ্যারে।
  • টাপল: বিভিন্ন প্রকার উপাদানসমৃদ্ধ একটি অ্যারে।
  • এনাম: একটি গণনাকৃত টাইপ।
  • এনিঃ: যেকোনো ধরনের।
  • ইউনিয়ন: একটি ভেরিয়েবল যেটি একাধিক টাইপের একটি নিতে পারে।

এই ডেটা টাইপগুলি ব্যবহার করে, টাইপস্ক্রিপ্ট টাইপ সুরক্ষাকে উন্নত করে, যা উন্নয়নের সময় ত্রুটি প্রতিরোধ করা সহজ করে তোলে।

র‍্যাপার অবজেক্টস

টাইপস্ক্রিপ্টে র‌্যাপার অবজেক্ট হল বস্তু যা স্বয়ংক্রিয়ভাবে আদিম ডেটা টাইপকে অবজেক্ট হিসাবে আচরণ করার জন্য তৈরি হয়। আদিম টাইপগুলি হালকা এবং দ্রুত ক্রিয়াকলাপের জন্য অনুমতি দেয়, যেখানে অবজেক্ট টাইপগুলির পদ্ধতি ও বৈশিষ্ট্য থাকে যা আরও উন্নত ক্রিয়াকলাপকে সক্ষম করে।

জাভাস্ক্রিপ্ট (এবং টাইপস্ক্রিপ্ট)-এ, string, number, এবং boolean এর মতো আদিম টাইপের সাথে সম্পর্কিত র‌্যাপার অবজেক্ট রয়েছে। এগুলি String, Number, এবং Boolean নামের কনস্ট্রাক্টর ফাংশন ব্যবহার করে তৈরি করা হয়।

নীচে র‌্যাপার অবজেক্টের উদাহরণ দেওয়া হল।

স্ট্রিং অবজেক্ট

String অবজেক্ট স্ট্রিংগুলির জন্য বৈশিষ্ট্য এবং পদ্ধতি প্রদান করে।

1let strPrimitive: string = "Hello, World!";
2let strObject: String = new String("Hello, World!");
3
4console.log(strPrimitive);         // Outputs: Hello, World!
5console.log(typeof strPrimitive);  // Outputs: string
6
7console.log(strObject);            // Outputs: [String: 'Hello, World!']
8console.log(typeof strObject);     // Outputs: object

বৈশিষ্ট্যসমূহঃ

  • প্রাথমিক string এর বিপরীতে, একটি String অবজেক্টকে typeof দ্বারা object হিসাবে গণ্য করা হয়।
  • স্ট্রিংগুলি পরিচালনা বা তাদের উপর পদ্ধতি আহ্বানের সময় র‌্যাপার অবজেক্টগুলি কার্যকর।

নাম্বার অবজেক্ট

Number অবজেক্ট নাম্বারগুলির জন্য বৈশিষ্ট্য এবং পদ্ধতি প্রদান করে।

1let numPrimitive: number = 42;
2let numObject: Number = new Number(42);
3
4console.log(numPrimitive);         // Outputs: 42
5console.log(typeof numPrimitive);  // Outputs: number
6
7console.log(numObject);            // Outputs: [Number: 42]
8console.log(typeof numObject);     // Outputs: object

বৈশিষ্ট্যসমূহঃ

  • Number অবজেক্ট, নাম্বারগুলির জন্য একটি র‌্যাপার হিসাবে, সাংখ্যিক অপারেশনের জন্য পদ্ধতিগুলি অন্তর্ভুক্ত করে (যেমন, toFixed)।

বুলিয়ান অবজেক্ট

Boolean অবজেক্ট বুলিয়ান মানগুলির জন্য বৈশিষ্ট্য এবং পদ্ধতি প্রদান করে।

1let boolPrimitive: boolean = true;
2let boolObject: Boolean = new Boolean(true);
3
4console.log(boolPrimitive);        // Outputs: true
5console.log(typeof boolPrimitive); // Outputs: boolean
6
7console.log(boolObject);           // Outputs: [Boolean: true]
8console.log(typeof boolObject);    // Outputs: object

বৈশিষ্ট্যসমূহঃ

  • Boolean অবজেক্টটি প্রাথমিক boolean টাইপের জন্য একটি র‌্যাপার এবং এটি object হিসাবে গণ্য হয়।

র‌্যাপার অবজেক্ট এবং প্রাথমিক টাইপগুলির মধ্যে পার্থক্য

র‌্যাপার অবজেক্টগুলি যেহেতু অবজেক্ট হিসাবে গণ্য করা হয়, তাই কর্মক্ষমতায় সামান্য হ্রাস ঘটে, তবে অতিরিক্ত বৈশিষ্ট্য এবং পদ্ধতির কারণে আরও কার্যকরী অপারেশন সম্ভব। অতএব, == এবং === ব্যবহার করে তুলনার মধ্যে পার্থক্য রয়েছে।

1let numPrimitive: number = 123;
2let numObject: Number = new Number(123);
3
4console.log('==  : ', numPrimitive == numObject);  // Outputs: true (Value comparison)
5console.log('=== : ', numPrimitive === numObject); // Outputs: false (Due to differing types)

বৈশিষ্ট্যসমূহঃ

  • == মানগুলিকে তুলনা করে, যেখানে === কঠোরভাবে টাইপ সহ তুলনা করে। === প্রিমিটিভ টাইপের সাথে র‍্যাপার অবজেক্টগুলোর তুলনা করলে false রিটার্ন করে।

টাইপ রূপান্তর

TypeScript-এ, implicit এবং explicit টাইপ রূপান্তরগুলি সঠিকভাবে পরিচালনা করা গুরুত্বপূর্ণ।

অগতানুগতিক টাইপ রূপান্তর

  • TypeScript-এ, টাইপ নিরাপত্তা নিশ্চিত করার জন্য যতটা সম্ভব আগতানুগতিক টাইপ রূপান্তর এড়াতে হবে।
1const result: string = 5 + "5"; // "55" (the number is converted to a string)
2
3console.log(result);
  • এই উদাহরণে, সংখ্যা 5 আগতানুগতিকভাবে একটি স্ট্রিংয়ে রূপান্তরিত হয়েছে, যার ফলে স্ট্রিংটি "55" হয়েছে।

স্পষ্ট টাইপ রূপান্তর

  • TypeScript-এ, টাইপ এনোটেশন বা টাইপ রূপান্তর ফাংশন ব্যবহার করে টাইপ রূপান্তরগুলি নিরাপদে সম্পন্ন করুন।
1const num: string = "123";
2const convertedNum: number = Number(num); // Converts "123" to the number 123
3
4console.log(typeof num);
5console.log(typeof convertedNum);
  • এই উদাহরণে, Number() ফাংশন ব্যবহার করে স্ট্রিং "123" স্পষ্টভাবে সংখ্যা 123 এ রূপান্তরিত করা হয়েছে।

টাইপ যাচাইকরণ

TypeScript-এ, আপনি একটি ভেরিয়েবলের ডেটা টাইপ পরীক্ষা করার জন্য typeof অপারেটর ব্যবহার করতে পারেন।

 1// Output: The type of 42 is: number
 2console.log('The type of 42             is:', typeof 42);
 3
 4// Output: The type of 42 is: bigint
 5console.log('The type of 42n            is:', typeof 42n);
 6
 7// Output: The type of "hello" is: string
 8console.log('The type of "hello"        is:', typeof "hello");
 9
10// Output: The type of true is: boolean
11console.log('The type of true           is:', typeof true);
12
13// Output: The type of undefined is: undefined
14console.log('The type of undefined      is:', typeof undefined);
15
16// Output: The type of null is: object
17console.log('The type of null           is:', typeof null);
18
19// Output: The type of Symbol() is: symbol
20console.log('The type of Symbol()       is:', typeof Symbol());
21
22// Output: The type of {} is: object
23console.log('The type of {}             is:', typeof {});
24
25// Output: The type of function () {} is: function
26console.log('The type of function () {} is:', typeof function () {});
  • TypeScript-এ, আপনি typeof ব্যবহার করে টাইপ পরীক্ষা করতে পারেন, তবে আরও সুনির্দিষ্ট টাইপ পরীক্ষার জন্য instanceof বা is অপারেটরগুলি ব্যবহার করার পরামর্শ দেওয়া হয়।

সারসংক্ষেপ

  • র‍্যাপার অবজেক্ট গুলো অবজেক্ট হিসেবে গণ্য হয় কারণ এগুলো প্রিমিটিভ টাইপগুলোর জন্য অতিরিক্ত মেথড এবং প্রোপার্টি প্রদান করে।
  • String, Number, এবং Boolean হলো র‍্যাপার অবজেক্টগুলোর প্রতিনিধিত্বমূলক উদাহরণ।
  • প্রিমিটিভ টাইপের থেকে ভিন্নভাবে, র‍্যাপার অবজেক্টগুলো typeof দ্বারা object হিসেবে চিহ্নিত হয়।

আপনি আমাদের ইউটিউব চ্যানেলে ভিজ্যুয়াল স্টুডিও কোড ব্যবহার করে উপরের নিবন্ধটি অনুসরণ করতে পারেন। দয়া করে ইউটিউব চ্যানেলটিও দেখুন।

YouTube Video