У меня есть функция карри, которая принимает универсальный c тип Entity и поля в качестве аргумента. fields
содержит только элементы, которые являются именем свойства Entity. Теперь я хочу, чтобы values
был объектом, состоящим из элементов fields
.
У меня проблема в том, что тип возвращаемого значения fn - это Entity, а не объект, состоящий только из ключей, включенных в fields
здесь код, который я пробовал:
type PrepareSearch = <Entity extends Record<string, any>>(
fields: ReadonlyArray<keyof Entity>
) => (values: Record<typeof fields[number], any>) => Record<string, any>;
const prepareSearch: PrepareSearch = fields => values => /* some code.. */
здесь желаемый вывод
interface IEntity {
id: string;
name: string;
}
const getEntitySearchCriterions = prepareSearch<IEntity>(["name"])
// Here I want to only allow 'name' as object key, because only 'name' was passed in the array above
const criterions = getEntitySearchCriterions({name: 'some name'})