TypeScript: переназначение значений в объекте с сохранением информации о типе - PullRequest
1 голос
/ 04 мая 2020

Возможно ли в TypeScript сопоставить значения объектов другому типу, который использует фактический тип записи в результате?

Не уверен, как это точно описать, но вот что я пытаюсь для достижения:

const obj = {
    a: 1,
    b: true,
    c: "foo"
}

const result = toFunctions(obj)

// Type of result would be:
{
    a: (input: number) => any // because a was of type number
    b: (input: boolean) => any // because b was of type boolean
    c: (input: string) => any // because c was of type string
}

Я пытаюсь «повторно использовать» типы из ключей исходных объектов в ключах возвращаемых объектов при выполнении какого-либо преобразования. В моем случае я хочу обернуть его в функцию, но такой механизм может также возвращать другие агрегатные типы, такие как number[] или string[].

Я хотел бы сделать это в общем c способ, которым я могу генерировать типы функций на основе клавиш любого объекта.

1 Ответ

2 голосов
/ 04 мая 2020

Тип отображения - это то, что вы ищете.

type MapToFuncs<T> = {
  [K in keyof T]: (arg: T[K]) => any
}

function toFunctions<T>(source: T): MapToFuncs<T> { … }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...