Всем доброго времени суток. Пишу библиотеку для типизации и возник вопрос по одному моменту, у меня есть Модель пользователя:
interface User {
option: any
option1: any
option2: any
}
Есть тип, который создает параметры, которые можно выбрать у пользователя:
type Options = {
[key in keyof User]?: boolean
}
Я передаю данный интерфейс в параметры функции, и из этой функции мне нужно вернуть юзера, но только с теми параметрами, которые были переданы в опции.
type Return<Options> = {
[key in keyof Model]: key extends keyof User ? User[key] : never
}
function test(options: Options): Return<typeof options>
Предоставленный выше код не работает, IDE всё так же отображает все опции через Tab. Проблему удалось решить вот таким образом:
function test<T extends Options>(options: T): Return<T>
Но к сожалению из-за этого в коде создается ещё больше других проблем. Вопрос простой, можно ли сделать то, что я хочу по другому?