У меня есть несколько типов запросов:
interface RequestA {};
interface RequestB {};
Каждый запрос имеет соответствующий тип ответа, который будет возвращен:
interface ResponseA {};
interface ResponseB {};
Мне нужны другие модули в моем приложении, чтобы иметь возможность в добавить дополнительные типы запросов и ответов (возможно, используя typescript declaration merging
?), чтобы кто-то другой мог зарегистрировать RequestC
и соответствующий ему тип ResponseC
.
В конце концов я хочу иметь типизированная executeRequest
функция, которая принимает типизированный объект запроса, и возвращаемый ответ должен иметь правильный тип.
const request: RequestA;
const response = myHandler.executeRequest(request);
// type of response should be ResponseA
// This type is registered by some other module!
const anotherRequest: RequestC;
const anotherResponse = myHandler.executeRequest(anotherRequest);
// type of response should be ResponseC
Как вы бы порекомендовали ввести эту функцию function executeRequest(request: ?) => ?
с TypeScript?