Как получить значения из объекта универсального типа?

#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];