TypeScript Basic Types (প্রাথমিক টাইপ)
string, number, boolean, array, tuple, object, any, unknown, never, void, bigint, symbol — প্রতিটি টাইপের বাংলা উদাহরণ।
Type annotation দিয়ে আমরা বুঝিয়ে দিই একটি মান কী ধরনের হবে। TypeScript-এরপর সেই নিয়ম সে নিজেই মেনে নেয় এবং ভুল করলে এডিটরেই জানিয়ে দেয়।
Type Annotation
ভেরিয়েবলের নামের পরে : টাইপ লিখে annotation করা হয়।
let name: string;
name = "রহিম";
// name = 42; // ❌ number string-এ দেওয়া যাবে নাString, Number, Boolean
const fullName: string = "আনামুল হাসান";
const age: number = 28;
const price: number = 99.5;
const isActive: boolean = true;
const total: number = price * 2;
const message: string = "আমার বয়স " + age + " বছর";Array ও Tuple
Array একই টাইপের তালিকা, আর tuple নির্দিষ্ট সংখ্যক ভিন্ন-টাইপের মান।
// Array
const scores: number[] = [60, 80, 92];
const names: string[] = ["রহিম", "করিম"];
const mixed: (string | number)[] = ["নাম", 28];
// Tuple — নির্দিষ্ট মাপ ও ক্রম
const person: [string, number] = ["রহিম", 28];
// person[1] = "wrong"; // ❌ number প্রত্যাশিতObject
const user: { name: string; age: number } = {
name: "রহিম",
age: 28,
};
// user.age = "তিরিশ"; // ❌ number প্রত্যাশিতnull ও undefined
const empty: null = null;
let notAssigned: undefined;
// strictNullChecks চালু থাকলে null সরাসরি number-এ যায় না
let count: number | null = null; // ✅any ও unknown
any মানে টাইপ-চেক বন্ধ — যেকোনো কিছু যায়, তবে সুরক্ষাও শেষ। unknown মানে মান আছে, তবে টাইপ জানি না — ব্যবহারের আগে তা সরু করে (narrowing) নিতে হয়।
let a: any = 1;
a = "টেক্সট"; // ✅ সাবধান!
a.toUpperCase(); // runtime-এ ভুল হতে পারে
let b: unknown = "টেক্সট";
// b.toUpperCase(); // ❌ unknown-এ সরাসরি call করা যায় না
if (typeof b === "string") {
b.toUpperCase(); // ✅ narrowing করার পরে
}void ও never
কোনো ফাংশন কিছু return না করলে void, আর কখনোই ফাংশন শেষ না হলে (শুধু error throw বা চিরন্তন লুপে) never।
function log(message: string): void {
console.log(message); // কিছু return করে না
}
function fail(message: string): never {
throw new Error(message); // এখান থেকে ফেরা যায় না
}
function infiniteLoop(): never {
while (true) {}
}bigint ও symbol
const bigNumber: bigint = 9007199254740991n;
const sym: symbol = Symbol("id");
// target-এ bigint বন্ধ থাকলে এই টাইপ ব্যবহার করা যাবে না
console.log(typeof bigNumber); // "bigint"any দিলে আপাতদৃষ্টিতে কম ঝামেলা লাগে, কিন্তু টাইপের সুরক্ষা চলে যায়। সম্ভব হলে unknown ব্যবহার করুন অথবা সঠিক টাইপ দিন — কম any-ই ভালো TypeScript।