monads
1.0.0
إذا كنت تستخدم هذا الريبو ، فقم بلفه
مستوحاة من الصدأ
التبعيات صفر • خفيفة الوزن • وظيفية
NPM تثبيت @التايمز/monads
Option<T>
النوعيمثل الخيار قيمة اختيارية: كل خيار هو إما بعض ويحتوي على قيمة ، أو لا شيء ، ولا.
ملحوظة
الوثائق الكاملة هنا: الخيار
استيراد {الخيار ، بعض ، لا شيء} من '@thames/monads' ؛ const divide = (البسط: الرقم ، المقام: الرقم): الخيار <number> => { if (almalator === 0) {return none ؛ } آخر {إرجاع بعض (البسط / المقام) ؛ }} ؛ // قيمة الإرجاع للدالة هي نتيجة ortionConst = Divide (2.0 ، 3.0) ؛ // match pattern لاسترداد رسالة valueConst = result.match ({{ البعض: (الدقة) => `النتيجة: $ {res}` ، لا شيء: "لا يمكن أن تقسم على 0" ،}) ؛ console.log (رسالة) ؛ // "النتيجة: 0.666666666666666"
Result<T, E>
typeتمثل النتيجة قيمة إما نجاح (موافق) أو فشل (ERR).
ملحوظة
الوثائق الكاملة هنا: النتيجة
استيراد {result ، ok ، err} من '@thames/monads' ؛ const getIndex = (القيم: string [] ، القيمة: السلسلة): النتيجة <number ، string> => { const index = values.indexof (value) ؛ Switch (INDEX) {case -1: return err ('value not found') ؛ الافتراضي: return ok (index) ؛ }} ؛ const stable = ['a' ، 'b' ، 'c'] ؛ getIndex (القيم ، 'b') ؛ // OK (1) getIndex (القيم ، 'Z') ؛ // err ("لا توجد قيمة")
Either<L, R>
إما يمثل قيمة إما اليسار أو اليمين. إنها طريقة قوية للتعامل مع العمليات التي يمكن أن تؤدي إلى نوعين مختلفين بشكل واضح من النتائج.
ملحوظة
الوثائق الكاملة هنا: إما
استيراد {إما ، يسار ، يمين} من '@thames/monads' ؛ const divide = (البسط: الرقم ، المقام: الرقم): إما <string ، number> => { if (almalator === 0) {return left ('لا يمكن تقسيمها على 0') ؛ } آخر {return right (البسط / المقام) ؛ }} ؛ const result = divide (2.0 ، 3.0) ؛ const message = result.match ({ اليسار: (err) => `خطأ: $ {err}` ، اليمين: (res) => `النتيجة: $ {res}` ،}) ؛ console.log (message) ؛ // "النتيجة: 0.666666666666666"