۳

آرایه، Tuple و Enum

چگونه مجموعه‌ای از داده‌ها را به صورت امن تایپ‌بندی کنیم.

آرایه‌ها (Arrays)

برای تعریف یه لیست از مقادیر هم‌نوع، از آرایه‌ها استفاده می‌کنیم. برای مشخص کردن نوع آرایه، نوع اعضا رو می‌نویسیم و بعدش `[]`.

let numbers: number[] = [1, 2, 3, 4, 5];
let names: string[] = ["علی", "سارا", "رضا"];

// numbers.push("hello"); // Error! Type 'string' is not assignable to type 'number'.

تاپل‌ها (Tuples)

تاپل‌ها شبیه آرایه‌ها هستن، ولی با دو تا فرق مهم: طولشون ثابته و نوع هر عضو رو می‌تونیم جداگانه مشخص کنیم. برای داده‌هایی که ساختار مشخصی دارن (مثل مختصات x, y) عالین.

// یک تاپل که عضو اولش رشته و عضو دومش عدده
let user: [string, number];
user = ["مریم", 25];

// user = [25, "مریم"]; // Error! Type 'number' is not assignable to type 'string'.
// user = ["مریم", 25, true]; // Error! Tuple type '[string, number]' of length '2' has no element at index '2'.

Enum: تعریف مجموعه‌ای از ثابت‌ها

با `enum` می‌تونیم یه مجموعه از ثابت‌های نام‌گذاری شده رو تعریف کنیم. این کار باعث می‌شه کدمون خواناتر بشه.

enum Direction {
    Up,
    Down,
    Left,
    Right,
}

let playerDirection: Direction = Direction.Up;

if (playerDirection === Direction.Up) {
    console.log("حرکت به بالا!");
}

تمرین! 🧠

یه `enum` برای نقش‌های کاربری (`UserRole`) با مقادیر `Admin`, `Editor`, و `Guest` بساز. بعد یه تاپل به اسم `userProfile` تعریف کن که عضو اولش اسم کاربر (رشته) و عضو دومش نقشش (از نوع `UserRole`) باشه و یه نمونه ازش بساز.

جواب تمرین

enum UserRole {
    Admin,
    Editor,
    Guest,
}

type UserProfile = [string, UserRole];

const user1: UserProfile = ["علی", UserRole.Admin];
const user2: UserProfile = ["سارا", UserRole.Guest];

console.log(user1); // ["علی", 0]
console.log(user2); // ["سارا", 2]