تاپل ها (Tuples)
«تاپل تایپ اسکریپت» یعنی یک آرایه تایپ شده با طول ثابت. آرایه (Array) یعنی لیست منظم از مقدارها. در تاپل، نوع هر خانه مشخص است. مثل کیف مدرسه با جیب های مشخص. هر جیب برای یک چیز خاص است.
تعریف تاپل و مقداردهی
تاپل (Tuple) ساختاری آرایه مانند است. هر اندیس نوع خودش را دارد. ترتیب مهم است. اگر جابه جا شود، خطا می گیری. این شبیه کیف لوازم التحریر است. خودکار باید در خانه خودش برود.
// define a tuple type
let ourTuple: [number, boolean, string];
// correct initialization
ourTuple = [5, false, 'Coding God was here'];
چرا ترتیب مهم است؟
چون هر خانه نوع خودش را دارد. اگر جای نوع ها عوض شود، دیگر با قرارداد سازگار نیست. پس کامپایلر اخطار می دهد.
// define a tuple type
let ourTuple: [number, boolean, string];
// wrong order causes an error
ourTuple = [false, 'Coding God was mistaken', 5];
نکته: اگر تاپل را در پروژه ری اکت دیدی، تعجب نکن. useState یک تاپل برمی گرداند؛ اولی مقدار، دومی تابع تنظیم کننده است.
تاپل فقط خواندنی (Readonly Tuple)
readonly یعنی «فقط بخوان، دست نزن». وقتی readonly نباشد، می توانی مقدارهای جدید push کنی. این بعد از طول تعریف شده، تایپ امن نیست.
// define a tuple type
let ourTuple: [number, boolean, string];
// initialize correctly
ourTuple = [5, false, 'Coding God was here'];
// no type safety beyond initial indices
ourTuple.push('Something new and wrong');
console.log(ourTuple);
حالا با readonly جلوی تغییر را بگیر. این مثل چسباندن برچسب «عدم تغییر» روی دفتر است.
// define a readonly tuple
const ourReadonlyTuple: readonly [number, boolean, string] = [5, true, 'The Real Coding God'];
// error: cannot push into a readonly tuple
ourReadonlyTuple.push('Coding God took a day off');
بیشتر درباره readonly در کلاس ها بخوان. همچنین صفحه تاپل تایپ اسکریپت را برای مرور سریع نگه دار.
تاپل نام دار (Named Tuple)
Named Tuple یعنی برای هر اندیس، نام بگذاریم. این باعث خوانایی بهتر می شود. مثل برچسب زدن روی کشوها.
// a named tuple for 2D coordinates
const graph: [x: number, y: number] = [55.2, 41.3];
ساختارشکنی (Destructuring)
Destructuring یعنی بازکردن اعضای آرایه یا شیء در متغیرها. مثل خالی کردن کیف روی میز و جداکردن هر چیز.
// tuple destructuring
const graph2: [number, number] = [55.2, 41.3];
const [x, y] = graph2;
برای پایه آرایه ها به آرایه ها برو. سپس برای اشیا، صفحه نوع شیء را ببین.
جمع بندی سریع
- تاپل طول و نوع ثابت دارد.
- ترتیب اندیس ها بسیار مهم است.
- برای ایمنی بیشتر از readonly استفاده کن.
- Named Tuple خوانایی را بهتر می کند.
- با Destructuring اعضا را جدا کن.