This utility type is useful when you want to create a variant of an interface where most properties are required, but specific properties remain optional. Commonly used for creation operations where most fields are mandatory.
interface Config {
apiUrl: string;
timeout?: number;
retries?: number;
debug?: boolean;
}
// All properties required except 'debug'
type StrictConfig = RequiredExcept<Config, 'debug'>;
const config: StrictConfig = {
apiUrl: 'https://api.vana.com', // Required
timeout: 5000, // Required (was optional, now required)
retries: 3, // Required (was optional, now required)
// debug remains optional
};
Makes all properties in T required except for those in K