Typescript - подставлять имена свойств типов из сопоставления - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть функция, которая принимает объект в качестве модели и объект, который представляет отображение. Он возвращает объект с двумя свойствами: одно, представляющее базовую модель, и одно, представляющее модель с каждым свойством, заключенным в другой тип. Отображение определяет ключи возвращаемого объекта, и отображение всегда будет

type Mapping<Model> = {
    foo: string,
    bar: string
}
function fooBar<M extends object, B extends Mapping>(model: M, mapping: B) {
    return {
        [mapping.foo]: model,
        [mapping.bar]: recursiveWrap(model) //this function would go through the model and wrap each property
    }
}

, поэтому вызов этой функции будет таким:

fooBar({ message: 'hello' }, { foo: 'thing', bar: 'thing$' })

должен возвращать тип, похожий на this:

type MyType = {
    thing: { message: string },
    thing$: WrappedType<{ message: string  }>
}

Но я не могу понять, как подставить имена свойств из объекта и все же правильно проверить тип.

Я следовал вместе с этим вопросом , но тогда тип возвращаемых свойств был { message: string } | WrappedType<{ message: string }>. Есть ли способ осуществить это без результата, являющегося типом объединения?

1 Ответ

1 голос
/ 22 апреля 2020

Это кажется маловероятным в настоящее время (апрель 2020 г.), но возможно в будущем.

См .:

...