type-plus
    Preparing search index...

    Function unpartial

    • Unpartial a partial type.

      Type Parameters

      • T extends Record<any, any>
      • R extends Record<any, any> = Partial<T>

      Parameters

      • base: T

        The base value to fill in needed property if not available in the partial value.

      • partial: undefined | null | R

        The partial value to be unpartialed.

      Returns Exclude<keyof R, keyof T> extends K
          ? [K] extends [never]
              ? {
                  [P in string | number | symbol]: P extends keyof R
                      ? T[P<P>]
                      | Exclude<R[P<P>], undefined>
                      : T[P]
              }
              : {
                  [P in string
                  | number
                  | symbol]: P extends keyof R
                      ? T[P<P>]
                      | Exclude<R[P<P>], undefined>
                      : T[P]
              } & Pick<R, K>
          : never

    • Unpartial a partial type with two base values. This is useful when you are extending value from another package or code. That means you have a parent value from the original code, a base value where you add additional defaults or override existing one, and partial value from input.

      Type Parameters

      • T extends Record<any, any>
      • R extends Record<any, any> = Partial<T>
      • S extends Record<any, any> = Partial<T & R>

      Parameters

      • parent: T

        The default value from the original code.

      • base: undefined | null | R

        The extended default value of your code.

      • partial: undefined | null | S

        The input value.

      Returns T & R & S

      please use composition instead: unpartial(unpartial(a, b), c)