R
T

PathToPartialType

Like {@link PathToType}, but every object key is optional and objects stay open (accept extra keys). Useful when the produced type only describes the keys a consumer *may* provide rather than the full shape of the source data.

Signature

ts
export type PathToPartialType<T extends string[], Target = unknown>
  = T extends [infer Head, ...infer Rest]
    ? Head extends `${number}`
      ? Rest extends string[]
        ? Array<PathToPartialType<Rest, Target>>
        : never
      : Rest extends string[]
        ? { [K in Head & string]?: PathToPartialType<Rest, Target> } & Record<PropertyKey, unknown>
        : never
    : Target;

Type Parameters

Textends string[]
Target= unknown