Я не думаю, что есть какой-либо способ попросить вашу IDE сделать это автоматически, но вы можете сделать функцию типа, которая вычислит тип, который вы ищете. От ответа на вопрос дубликатов , я бы написал Expand
:
type Expand<T> = T extends infer U ? { [K in keyof U]: U[K] } : never;
, который принимает тип (или объединение типов) и просматривает все его свойства, даже если они происходят из нескольких пересечений и упаковывают его (или каждый член объединения) в один тип объекта. Затем вы можете написать Expand<C>
или определить C
как Expand<A & B>
:
type ExpandedC = Expand<A & B>;
/*
type ExpandedC = {
a: number;
b: string;
c: boolean;
d: Date;
}
*/
, что вы и хотели. Хорошо, надеюсь, это поможет; удачи!
Детская площадка ссылка на код