У меня есть такая структура данных:
const endpoints = {
async Login: (params) => { ... }
async Register: (params) => { ... }
}
Теперь я хочу указать, что каждый элемент в этом объекте должен принимать объект params и возвращать обещание.
Я могу сделать что-то вроде это:
interface EndpointMap {
[endpointName: string]: (
params: Record<string, any>
) => Promise<any>;
}
Это хорошо работает. Но в этом есть и обратная сторона.
Если я сделаю что-нибудь еще, например, endpoint : keyof typeof endpoints
, результат будет только string
. Если бы я удалил интерфейс EndpointMap
, я бы получил String Union всех ключей объекта endpoint
. Гораздо лучше!
Есть ли способ получить лучшее из обоих миров?
Спасибо!