Из документов TypeScript:
// Removes 'optional' attributes from a type's properties
type Concrete<Type> = {
[Property in keyof Type]-?: Type[Property];
};
type MaybeUser = {
id: string;
name?: string;
age?: number;
};
Я знаю, что могу добавить модификатор ?
к всем свойствам. Что, если я хочу добавить его свойство за свойством на основе выражения extends
?
Что-то, что будет вести себя так:
// Not valid TypeScript
type Optionalize<T> = {
[P in keyof T](?: T[P] extends SomeInterface): T[P];
}