Nevertheless Published Mine

    lifts
    TypeScript icon, indicating that this package has built-in type declarations

    0.1.4 • Public • Published

    Lifts

    LIghtweight Functional programming library for TypeScript

    Install

    yarn add lifts
    # or 
    npm i -S lifts

    Usage

    Do

    Shorthand for Immediately Invoked Function Expression

    const date = new Date('2020-04-17')
     
    const result: number | null = Do(() => {
        // check date is valid
        if (!isNaN(date)) {
            return date.getDate()
        } else {
            return null
        }
    })
    result // => 17
     
    // equivalent to
    const result = (() => {
        if (!isNaN(date)) {
            return date.getDate()
        } else {
            return null
        }
    })()

    Switch

    Object-Style switch

    const fn = (value: string) =>
        Switch(value)(
            {
                a: () => 'String A',
                b: () => 'String B',
            },
            () => null, // default value
        )
     
    fn('a') // => 'string A'
    fn('b') // => 'string B'
    fn('c') // => null (default value)

    Result

    const parseDate = (dateStr: string): IResult<Date, Error> => {
        const date = new Date(dateStr)
     
        // check date is valid
        if (!isNaN(date)) {
            return Result.ok(date)
        } else {
            return Result.err(new Error('Invalid Date'))
        }
    }
     
    parseDate('2020-04-17')
    // => { isOk: true, valueOrError: Date('2020-04-17') }
     
    parseDate('foo')
    // => { isOk: false, valueOrError: Error('Invalid Date') }

    Result.switch

    const result = parseDate('2020-04-17')
     
    Result.switch(result)({
        ok: (value: Date) => {
            // called if result is Ok
            return value.getDate()
        },
        err: (error: Error) => {
            // called if result is Err
            return null
        },
    })
    // => 17
    const result = parseDate('foo')
     
    Result.switch(result)({
        ok: (value) => {
            return value.getDate()
        },
        err: (error) => {
            return null
        },
    })
    // => null

    Result.wrap

    Wraps Error with Result.err() if error caught, else wraps value with Result.ok().

    const result = Result.wrap(() => {
        if (condition) {
            return true
        } else {
            throw new Error()
        }
    })

    MapAsync

    Pipe

    Keywords

    none

    Install

    npm i lifts

    DownloadsWeekly Downloads

    95

    Version

    0.1.4

    License

    MIT

    Unpacked Size

    33.3 kB

    Total Files

    71

    Last publish

    Collaborators

    • yarnaimo