Maybe is a type with tow variantes Some and None, can have nothing (None) or some value (Some).
The Maybe variable makes it possible to have a something depending on the particular value.
tsjmaybe is available as a package on npm.
$ npm install tsjmaybe
type Maybe<T> =
| Some<T>
| None<T>
getValue -> T
const existString: Maybe<string> = new Some(" tsjmaybe ")
const noExistString: Maybe<string> = new None()
existString.getValue() // " maybe "
noExistString.getValue() //
map <U>(T) => U -> Maybe<U>
const existString: Maybe<string> = new Some(" tsjmaybe ")
const noExistString: Maybe<string> = new None()
const resultMapExistString = existString
.map(s => s.trim())
.map(s => s.toUpperCase()) // Maybe<string> -> Some { value: "TSJMAYBE" }
const resultMapNoExistString = noExistString
.map(s => s.trim())
.map(s => s.toUpperCase()) // Maybe<string> -> None {}
matchWith <A>{ Some: (T) => A, None: () => A } -> Maybe<A>
const existString: Maybe<string> = new Some(" tsjmaybe ")
const noExistString: Maybe<string> = new None()
const matchWithString = existString.matchWith({
Some: (value: string) => {
return value.length
},
None: () => {
return
}
}) // Maybe<number> -> Some { value: 10 }
const matchWithNoString = noExistString.matchWith({
Some: (value: string) => {
return value.length
},
None: () => {
return
}
}) // Maybe<string> -> None {}
const matchWithReturnNewMaybe = noExistString.matchWith({
Some: (value: string) => {
return value.length
},
None: () => {
return "Add some string"
}
}) // Maybe<string> -> Some { value: "Add some string" }
withDefaultValue T -> Maybe<T>
const some: Maybe<number> = new Some(7) // Some { value: 7 }
const none: Maybe<number> = new None() // None {}
const defaultSome = some.withDefaultValue(4) // Some { value: 7 }
const defaultNone = none.withDefaultValue(4) // Some { value: 4 }
const noExistString: Maybe<string> = new None()
const matchWithNoString = noExistString.matchWith({
Some: (value: string) => {
return value.length
},
None: () => {
return undefined
}
}).withDefaultValue(6) // Maybe<number> -> Some { value: 6 }
Report a suggestion by posting an issue
Star the project
npm run test
MIT