Function genNakedPropOrCrash

  • Utility function for generating property getter for one specific object. Functionally similar to propOrCrash, but it has swapped arguments and only supports naked objects.

    Type Parameters

    • T extends object

    Parameters

    • obj: T
    • Optional errorFactoryGeneric: string | ((key) => string | Error)

    Returns (<K>(k, errorFactoryOnGetter?) => WithoutOptValues<T[K]>)

      • <K>(k, errorFactoryOnGetter?): WithoutOptValues<T[K]>
      • Type Parameters

        • K extends string | number | symbol

        Parameters

        • k: K
        • Optional errorFactoryOnGetter: string | ((key) => string | Error)

        Returns WithoutOptValues<T[K]>

    Example

    interface Animal {
    id: number;
    name?: string;
    }

    const spot: Animal = {id: 36, name: 'Spot'};
    const getSpotProp = genNakedPropOrCrash(spot);
    getSpotProp('name') // 'Spot'
    getSpotProp('id') // 36

    const cow: Animal = {id: 36};
    const getCowProp = genNakedPropOrCrash(cow);
    getCowProp('name') // crashes with 'missing name'

    // with custom error
    const duck: Animal = {id: 36};
    const getDuckProp = genNakedPropOrCrash(duck, key => `Custom error: ${key} is missing`);
    getDuckProp('name') // crashes with 'Custom error: name is missing'
    // or during usage
    getDuckProp('name', 'duck is missing a name') // crashes with 'duck is missing a name'

    It is a shorter alternative of

    const o = opt(obj);
    o.propOrCrash('fieldA')
    o.propOrCrash('fieldB')

    ->

    const g = genNakedPropOrCrash(obj);
    g('fieldA')
    g('fieldB')

    Performance characteristics are expected to be similar.

Generated using TypeDoc