ශ්‍රී ලංකාවේ නවතම තාක්ෂණික පුවත් 2026-07-23, Thursday
💻 ක්‍රමලේඛනය · 🕒 කියවීමට විනාඩි 2 · 👁 1

TypeScript හි Monad තේරුම් ගැනීම: Promise, Array හා Maybe සමඟ ප්‍රායෝගික මාර්ගෝපදේශය

TypeScript හි Monad තේරුම් ගැනීම: Promise, Array හා Maybe සමඟ ප්‍රායෝගික මාර්ගෝපදේශය

Monad ගැන බ්ලොග් ලිපි පලය ගණනාවක් කියවලා, තේරුම් ගැනීමට තවත් අමාරු වුනාද? දැන් ඒ සංකීර්ණතා අතහැර, TypeScript දිනපතා භාවිත කරන Promise සහ Array මගින් Monad එකේ මූලික රටාව ඉක්මනින් ගවේෂණය කරමු.

Monad කියන්නේ "අගයක් ගොඩනැගෙන පේට්‍රෝලයක්" වගේ, තුන් ක්‍රියාකාරකම් – of, map සහ chain – ලබා දෙන වර්ගයක්. of(a) මඟින් අගයක් පේට්‍රෝලයට ඇතුළත් කරයි, map(f) පේට්‍රෝලය තුළ අගය වෙනස් කරයි, chain(f) අගය නව පේට්‍රෝලයක් බවට පත් කර, පසුව ඒ පේට්‍රෝලය සමතල කරයි.

Promise එකත් මේ රටාවට අනුකූල වේ. Promise.resolve(42) යනු of ක්‍රියාව, then(x => x*2) යනු map (සාමාන්‍ය අගයක් ආපසු දෙන විට) සහ then(id => fetch(`/api/users/${id}`)) යනු chain (ආපසු Promise එකක් දෙන විට). JavaScript එකේ .then එකම දෙකම කරයි – අගය සාමාන්‍ය වුවමනා නම් map, Promise එකක් නම් chain.

Array ද Monad එකකි. [42] යනු of, arr.map(x => x*2) යනු map, සහ arr.flatMap(x => [x, x*10]) යනු chain. මෙහි flatMap කියන්නේ map පසු flatten කිරීමයි, ඒ නිසා එය chain ලෙසද හඳුන්වයි.

මේ රටාව වඩාත් ප්‍රායෝගිකව දැකගත හැක්කේ Maybe Monad භාවිතයෙන් නල් (null) පරීක්ෂණ ඉවත් කිරීමයි. පාරම්පරිකව if (user && user.address && user.address.city) වගේ කේතයක් ලියන්නෙමු, නමුත් Maybe සමඟ pipe හා chain භාවිතා කරලා එක ලයින් එකට ලියන්න පුළුවන්:

  • M.fromNullable(user) – නල් නම් Nothing, නැතිනම් Just(user)
  • M.chain(u => M.fromNullable(u.address))
  • M.chain(a => M.fromNullable(a.city))
  • M.map(city => city.toUpperCase())
  • M.getOrElse(() => "UNKNOWN")

එකක්වත් Nothing වෙලා ඉඳලා, ඊළඟ map හෝ chain ක්‍රියා නොකෙරේ. එබැවින් නල් පරීක්ෂණ, early return, exception handling ආදිය අතහැර, පිරිසිදු, ආකෘතිමත් කේතයක් ලියන්න පුළුවන්.

ශ්‍රී ලංකාවට ඇති වැදගත්කම

  • අධ්‍යයන ශිෂ්‍යයින් – Functional Programming මූලධර්ම ඉගෙන ගන්න සරල උදාහරණයක්.
  • දේශීය සංවර්ධකයින් – Promise, Array, Maybe වැනි Monad භාවිතයෙන් කේතයේ අඩු බග්, වැඩි maintainability ලැබේ.
  • ව්‍යාපාර – Null‑check අඩු කර, සේවා වේගය වැඩි කර, දෝෂ අවදානම අඩු කරයි.

Monad එකේ මූලික රටාව තේරුම් ගත් පසු, @oofp/core වැනි ලයිබ්‍රරී වල ඇති අනෙකුත් Monad වර්ගයන්ටත් ඒකම ආකාරයෙන් යොමු විය හැකිය. TypeScript කේතය වඩාත් පාරදර්ශී, ආරක්ෂිත, සහ ප්‍රතිපත්තිමත් කර ගැනීමට මේ මාර්ගෝපදේශය ඔබේ අත්වැල වේ.

💡 ඔබේ TypeScript කුසලතා වැඩිදියුණු කරන්න, මොනඩ් ගැන දැන්ම ඉගෙන ගන්න!
මූලාශ්‍රය මෙම ලිපිය AI මගින් රචිත මුල් සාරාංශයකි. සම්පූර්ණ වාර්තාව කියවන්න:
Dev.to ↗
#TypeScript #Monad #Promise #Array #Maybe