Skip to main content

RequiredKeys<Original, Keys>

RequiredKeys<Original, Keys> = Omit<Original, Keys> & Required<Pick<Original, Keys>>

Creates a type where specified keys become required while others remain unchanged.


Type Parametersโ€‹

Original: Originalโ€‹

The original object type.

Keys: Keys extends keyof Originalโ€‹

The keys that should become required.


Sinceโ€‹

1.0.0


Exampleโ€‹

type User = {
id: string;
name?: string; // Optional
email?: string; // Optional
avatar?: string; // Optional
};

// RequiredKeys<User, "name" | "email">
// Results in: { id: string; name: string; email: string; avatar?: string; }
type UserRequired = RequiredKeys<User, "name" | "email">;

const user: UserRequired = {
id: "123", // Required (unchanged)
name: "John", // Required (became required)
email: "john@example.com", // Required (became required)
// avatar remains optional (unchanged)
};