#typescript #generics #typescript-generics
#typescript #дженерики #typescript-generics
Вопрос:
Я пытаюсь создать составной универсальный тип, созданный из первого объекта-аргумента.
const x = {
one: (x: {a: boolean; b: boolean}) => true,
two: (x: {c: boolean; d: boolean}) => true,
};
type VVVV<t> = {
[k in keyof t]: t[k] extends (...args: any) => any ? Parameters<t[k]>[0] : {};
};
type l = VVVV<typeof x>;
type currentOutput = {
one: {
a: boolean;
b: boolean;
};
two: {
c: boolean;
d: boolean;
};
};
type desiredOutput = {
a: boolean;
b: boolean;
c: boolean;
d: boolean;
};
Как мне создать тип, который выглядит как desiredOutput
из текущего вывода VVVV
, который выглядит как currentOutput
?
Ответ №1:
Я искал это: (
type VVVV<t> = {
[k in keyof t]: t[k] extends (...args: any) => any ? Parameters<t[k]>[0] : {};
}[keyof t];