مقایسه تایپ‌های Literal و Collective در تایپ اسکریپت

تایپ اسکریپت با افزودن تایپ‌های استاتیک، سطحی از type safety را در کدی که داریم ارائه می‌دهد. ما می‌توانیم تضمین کنیم که ویژگی‌ها یا توابع خاصی در کد ما وجود دارند و می‌توانیم آن‌ها را با تایپ‌های مورد نظر خود مطابقت دهیم. این کار می‌تواند میزان خطاهای سمت کلاینت را که ممکن است در وب‌سایت خود داشته باشیم بسیار کاهش دهد. برای مثال، از ایجاد خطاهای انسانی مانند فراخوانی توابع بر روی آبجکت‌های اشتباه جلوگیری می‌کند. تایپ اسکریپت این کار را با استفاده از تایپ‌های Collective و Literal انجام می‌دهد.

در این مقاله قصد داریم تا با تفاوت‌های بین تایپ‌های Collective و Literal در تایپ اسکریپت بیشتر آشنا شویم.

تایپ Collective در تایپ اسکریپت چیست؟

تایپ Collective مفهومی است که اکثر توسعه‌دهندگانی که با تایپ اسکریپت کار می‌کنند با آن آشنا هستند. مثلا:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
const addOne = (numb: number) => num + 1;
const addOne = (numb: number) => num + 1;
const addOne = (numb: number) => num + 1;

مثال بالا از تایپ Collective استفاده می‌کند. تایپ‌های Collective ‌تایپ‌هایی مانند

number
number،
string
string،
boolean
boolean و یا
number[]
number[] هستند.

این تایپ‌ها شامل مقدار زیادی از متغیرهای موجود می‌باشند. به عنوان مثال، تایپ

number
number می‌تواند شامل ۱، ۲، ۳، ۴، ۵ … و غیره باشد. اما تایپ اسکریپت تایپ‌های فرعی را در این تایپ Collective به ما ارائه می‌دهد که کمی سختگیرانه‌تر از حالت قبلی هستند.

تایپ Literal در تایپ اسکریپت چیست؟

ما همچنین می‌توانیم از مقادیر به عنوان تایپ‌ها استفاده کنیم، بنابراین

let eleven: 11 = 11
let eleven: 11 = 11 یک کد تایپ اسکریپتی کاملاً معتبر است. این موضوع در ابتدا ممکن است کمی عجیب به نظر برسد اما بسیار پرکاربرد بوده و حتی می‌تواند خوانایی کدی که داریم را افزایش دهد.

با توجه به این موضوع، می‌توانیم شروع به ساخت تایپ‌هایی مانند تایپ enum کرده و به طور خاص تعریف کنیم که فقط می‌توانیم مقادیر خاصی را به آن تخصیص دهیم، به عنوان مثال:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
type Door = 'open' | 'closed' | 'ajar'
type Door = 'open' | 'closed' | 'ajar'
type Door = 'open' | 'closed' | 'ajar'

اکنون می‌توانیم از تایپ

Door
Door در سرتاسر کد خود استفاده کنیم. تفاوتی که تایپ
Door
Door با تایپ
string
string دارد این است که این تایپ مجموعه‌ای از مقادیر سخت‌گیرانه‌تر از آنچه تایپ
string
string اجازه می‌داد تا از آن‌ها استفاده کنیم را شامل می‌شود.

اگر

|
| در کد بالا مشخص نباشد، یک تایپ Union به حساب می‌آید و در اصل به معنای
OR
OR می‌باشد. در نتیجه هر تایپ که با
Door
Door مطابقت دارد فقط می‌تواند مقادیر
open
open یا
closed
closed یا
ajar
ajar را داشته باشد.

جمع‌بندی

تایپ‌های Literal زیرمجموعه‌ای از تایپ‌های Collective در تایپ اسکریپت هستند. یعنی می‌توانیم بگوییم که همه تایپ‌های Literal تایپ Collective هستند، اما همه تایپ‌های Collective تایپ Literal نمی‌باشند.

برای این که درک این موضوع ساده‌تر باشد می‌توانیم این مثال را در نظر بگیریم، که تایپ Literal

11
11 یک تایپ number است اما همه تایپ‌های number
11
11 نیستند.

در این مقاله سعی کردیم تا تفاوت‌های بین تایپ‌های Literal و Collective در تایپ اسکریپت را بررسی کنیم. در نهایت، توجه به این نکته لازم است اگر در کد خود نیاز به محدود کردن شدید تایپ‌ها داشتیم، توصیه می‌شود که از تایپ‌های Literal برای این منظور استفاده کنیم.

دیدگاه‌ها:

افزودن دیدگاه جدید