Back to tasksGet help with live coding in real time with Sobes Copilot
Junior — Senior
26
Определение типов для объектов с фиксированными ключами эндпоинтов
Companies where asked:
ED-IT
Task condition
Необходимо разработать типизацию, которая корректно описывает два разных объекта, при этом сохраняет точные типы ключей внутри свойства endpoints. Стандартные подходы вроде key: string или Record<string, ...> не подходят, так как они размывают конкретные имена методов.
Предполагается, что набор ключей эндпоинтов известен на этапе компиляции для каждого объекта:
- для
vtemplateObject–getVtemplatesиpostVtemplates; - для
reportObject–getReportsиputReports.
Задача состоит в том, чтобы описать типы так, чтобы TypeScript «знал», какие именно свойства находятся внутри endpoints, не меняя базовый тип объектов.
//-- 1 -- Задаёт структуру объектов, не знает про конкретные объекты и их методы
//-- 2 -- Не может менять базовый тип, но знает про структуру объекта который типизирует
const vtemplateObject = {
entity: "vtemplate",
endpoints: {
getVtemplates: {
method: "GET",
url: "vtemplate"
},
postVtemplates: {
method: "POST",
url: "vtemplate"
}
}
}
const reportObject = {
entity: "report",
endpoints: {
getReports: {
method: "GET",
url: "report"
},
putReports: {
method: "PUT",
url: "report"
}
}
};
Требуется построить тип (или набор типов), который будет принимать такие объекты и сохранять точные типы их эндпоинтов, не прибегая к обобщённым Record<string, …> и не меняя саму структуру объектов.