- Notifications
You must be signed in to change notification settings - Fork0
mudssrali/cond-construct
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Inspired byElixir'scond
this is a simpler alternative tolodash's_.cond
Install with npm or yarn via
yarn add cond-construct
or
npm i cond-construct
typeCond=(pairs:Array<[boolean,unknown|(()=>unknown)]>,options?:{strict:boolean})=>unknown
importcondfrom'cond-construct'constvalue=cond([[false,'false'],[true,'true'],[true,'true but too late']])// value === 'true'
You can disable strict checking by passing options as the second argument:
importcondfrom'cond-construct'constvalue=cond([[false,'false'],[1,'truthy'],[true,'true but also too late']],{strict:false})// value === 'truthy'
Also works nicely with React components as you can have the values lazily evaluated by wrapping it in a function:
importcondfrom'cond-construct'constComponent=({ hasErrors, isNew, isLoading})=>(<>{cond([[isLoading,()=><Loading/>],[isNew,()=><Create/>],[hasErrors,()=><ShowErrors/>]])}</>)
- [] Handle multiple method executions
- [] Add more option for falsy value
As all predicates have to be evaluated before the right branch can be chosen, it can have a negative performance impact if you rely on heavy computations here. It's best have simple booleans and resort to_.cond
for complex use cases.