1.1.0 • Published 3 years ago

tsjmaybe v1.1.0

Weekly downloads
2
License
MIT
Repository
github
Last release
3 years ago

tsjmaybe

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.

Starting

tsjmaybe is available as a package on npm.

$ npm install tsjmaybe

Definition

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 }

Contribute

Report a suggestion by posting an issue
Star the project

Running tests

npm run test

License

MIT

1.1.0

3 years ago

1.0.0

4 years ago

0.5.0

4 years ago

0.4.0

4 years ago

0.3.0

4 years ago

0.2.0

4 years ago

0.1.0

4 years ago