interface User {
id: number;
name: string;
email: string;
password: string;
createdAt: Date;
}
// Pick only specific properties
type UserPublic = Pick<User, 'id' | 'name' | 'email'>;
// Omit sensitive properties
type UserSafe = Omit<User, 'password'>;
// Create input type (without auto-generated fields)
type CreateUserInput = Omit<User, 'id' | 'createdAt'>;
// Partial for updates
type UpdateUserInput = Partial<Omit<User, 'id'>>;Custom utility: Required Pick
type RequiredPick<T, K extends keyof T> = Required<Pick<T, K>> & Omit<T, K>;
// Make only 'name' and 'email' required
type UserWithRequiredContact = RequiredPick<Partial<User>, 'name' | 'email'>;



