
با یک مثال ساده این مقاله رو شروع میکنیم.
فرض کنید میخوایم یک تایپ بنام Shape داشته باشیم که شامل مربع ( square ) ، دایره ( circle ) و مستطیل ( rectangle ) میشه. موضوع اینه که هر کدوم از این سه شکل ویژگی های مخصوص به خودشون رو دارند.
یک راه خیلی ساده اینه که تایپی بنام TShape رو به صورت زیر تعریف کنیم:

با تعریف تایپ TShape میتونیم مربع، مستطیل یا دایره رو تعریف کنیم:

اما مشکل اینه که میتونیم شکل های بی معنی هم داشته باشیم. مثلا دایره ای که طول و عرض داره:

یا مثلا مربعی که شعاع داره:

اینجاست که Discriminated Union ها رو نیاز داریم. فرض کنید سه تایپ مختلف داریم به نام های TCircle و TSquare و TRectangle که همشون یک property مشترک بنام kind دارند:

و یک تایپ TShape که به صورت زیر تعریف میشه:

در این حالت TypeScript دیگه اجازه نمیده یک مربع با property شعاع یا همون radius تعریف کنیم و در صورت همچین تعریفی خطا میده:

روش دوم برای تعریف Discriminated Unions زمانیه که همه تایپ ها یه تعداد property مشترک دارند. مثلا همه شکل ها رنگ محیط ( borderColor ) و رنگ پس زمینه ( fillColor ) دارند.
میتونیم تایپ ها رو به صورت زیر هم تعریف کنیم ( به تعریف TShape دقت کنید )

استفاده از Discriminated Unions مزایای زیادی داره:
امیدوارم از خوندن این مقاله کوتاه لذت برده باشید و براتون مفید بوده باشه.
اگر دوست دارید میتونید از طریق صفحه لینکدین با من در ارتباط باشید :)