utilitypes-ts
    Preparing search index...

    Type Alias MakeRequired<T, K>

    MakeRequired: T extends T
        ? Omit<T, K> & Required<Pick<T, Extract<K, keyof T>>>
        : never

    Makes specified keys K required in each member of a union T.

    This distributes over unions, ensuring each union member is processed individually. Only keys that exist in each member are affected.

    Type Parameters

    • T

      The target type (can be a union)

    • K extends UnionKey<T> = UnionKey<T>

      Keys to make required (defaults to all union keys)

    type Result = MakeRequired<{ a?: string; b?: number }>;
    // ^?
    // { a: string; b: number }
    type Result = MakeRequired<{ a?: string } | { b?: number }>;
    // ^?
    // { a: string } | { b: number }
    type Result = MakeRequired<{ a?: string } | { b?: number }, "a">;
    // ^?
    // { a: string } | { b?: number }