utility-types
utility-types copied to clipboard
New Type "RequiredByValueExcept<T, ValueType>", "PartialByValueExcept<T, ValueType>"
Is your feature request related to a real problem or use-case?
This is useful when defining parameter values for functions.
Describe a solution including usage in code example
interface optionI {
inputPath: string;
outputPath: string;
format: string;
}
const defaultOption: RequiredByValueExcept<optionI, 'inputPath' | 'outputPath'> = {
format: 'txt'
};
function foo(text: string, option: PartialByValueExcept<optionI, 'inputPath' | 'format'>) {
// ...
}
Who does this impact? Who is this for?
I think this would be useful for defining default values and parameters.
Describe alternatives you've considered (optional)
Additional context (optional)
The naming convention has been unified. https://stackoverflow.com/questions/52703321/make-some-properties-optional-in-a-typescript-type
type RequiredByValueExcept<T, TOptional extends keyof T> = Pick<T, Diff<keyof T, TOptional>> & Partial<T>;
type PartialByValueExcept<T, TRequired extends keyof T> = Partial<T> & Pick<T, TRequired>;