Option and Result types for JavaScript; TypeScript first
npm install @threestup/monadsInspired by Rust.
Previously known on npm as tsp-monads.

!Codecov
 
NOTE: Works with TypeScript 2+ _and_ JavaScript (ES6+). strictNullChecks option / flag strongly recommended.
```
npm install @threestup/monads
`typescript
import { Option, Some, None } from '@threestup/monads'
const divide = (numerator: number, denominator: number): Option
if (denominator === 0) {
return None
} else {
return Some(numerator / denominator)
}
};
// The return value of the function is an option
const result = divide(2.0, 3.0)
// Pattern match to retrieve the value
const message = result.match({
some: res => Result: ${res},
none: 'Cannot divide by 0',
})
console.log(message) // 'Result: 0.6666666666666666'
`
`typescript
import { Result, Ok, Err } from '@threestup/monads'
function getIndex(values: string[], value: string): Result
const index = values.indexOf(value)
switch (index) {
case -1:
return Err('Value not found')
default:
return Ok(index)
}
}
console.log(getIndex(['a', 'b', 'c'], 'b')) // Ok(1)
console.log(getIndex(['a', 'b', 'c'], 'z')) // Err('Value not found')
...
``