HandleArrayNullability<Result, FlatModel>: any[] extends Result
    ? Result
    : NonNullable<FlatModel> extends (infer InnerValue)[]
        ? null extends FlatModel
            ? null extends InnerValue
                ? (RestoreArrays<Result, UnwrapArray<FlatModel>> | null)[] | null
                : RestoreArrays<Result, UnwrapArray<FlatModel>>[] | null
            : null extends InnerValue
                ? (RestoreArrays<Result, UnwrapArray<FlatModel>> | null)[]
                : RestoreArrays<Result, UnwrapArray<FlatModel>>[]
        : never

This mapped type gets called by RestoreArrays<T, K> and it restores the expected nullability in array fields (e.g. nullable vs. required value & nullable vs. required array)

Type Parameters

  • Result

  • FlatModel