2.3 অ্যারে
জাভাস্ক্রিপ্টের মত টাইপস্ক্রিপ্টেও আমরা অ্যারে ভ্যালু নিয়ে একই ভাবে কাজ করতে পারি, তবে টাইপস্ক্রিপ্টে আমাদের অ্যারে ব্যাবহারের জন্য অ্যারের টাইপ ডিফাইন করে নিতে হবে। টাইপস্ক্রিপ্টে আমরা দুইভাবে অ্যারে টাইপ ডিফাইন করতে পারি, যেমনঃ
let list: number[] = [];
list.push(1);
list.push(2);
list.push(3);
console.log(list);
//output [1, 2, 3]
আমরা একটা list অ্যারে ডিফাইন করেছি যেটা আসলে নাম্বার টাইপ, তার মানে এই অ্যারে লিস্টে শুধুমাত্র নাম্বার টাইপের ডাটা রাখতে পারবো , এখন আমরা যদি কোনো স্ট্রিং ভ্যালু পুশ করতে চাই তাহলে কম্পাইলার আমাদের এরর দেখাবে।
let list: number[] = [];
list.push('apple');
//Error Argument of type 'string' is not assignable to parameter of type 'number'.
আবার আমরা জেনেরিক টাইপ হিসাবেও অ্যারে ডিফাইন করতে পারি যেমনঃ
// The second way uses a generic array type, Array:
let list: Array = ["apple", "banana", "orange"];
এখন আমরা চাইলে অ্যারে অফ অবজেক্ট হিসাবেও অ্যারে ডিফাইন্ড করতে পারি, যেমনঃ
type PersonType{
id: number;
name: string;
age: number;
}
let persons: PersonType[] = [];
persons.push({id: 1, name: 'Mahmudul Hasan', age: 28});
persons.push({id: 2, name: 'Rahim', age: 89, height: 5.6})
// Error Argument of type '{ id: number; name: string; age: number; height: number; }' is not assignable to parameter of type 'PersonType'.
তার মানে আমরা দেখলাম persons অ্যারে তে শুধুমাত্র PersonType এর অবজেক্ট রাখতে পারবো তা না হলে টাইপস্ক্রিপ্টে আমাদের কমপাইল টাইম এরর দেখাবে। আবার আমাদের PersonType অবজেক্ট এর properties হিসাবে আমরা যেকোন টাইপ এর ডাটা ডিফাইন করতে পারি, যেমনঃ
interface PersonType{
id: number;
name: string;
age: number;
books: string[]
}
let persons: PersonType[] = [];
persons.push({id: 1, name: 'Mahmudul Hasan', age: 28, books: ["Physics", "Math"] });
এখানে আমরা books নামে একটা নতুন প্রোপার্টি যুক্ত করেছি, যেটা আবার অ্যারে অফ স্ট্রিং, আবার আমরা অ্যারে অফ অ্যারে ও ডিফাইন করতে পারি:
interface PersonType{
id: number;
name: string;
age: number;
books: string[]
}
let persons: PersonType[][] = []; // array of array
persons.push([{id: 1, name: 'Mahmudul Hasan', age: 28, books: ["Physics", "Math"] }]);