Как безопасно заставить Typescript работать с пользовательским бэкенд API
В своем приложении я использую маршруты конечных точек API. В этих конечных точках http-запросы о данных обрабатываются бэкендом с помощью PRISMA ORM.
Однако, мне пришлось использовать что-то другое для фронтенда, и я начал писать типы typescript, которые похожи на типы моего бэкенда. Это очень контринтуитивно, если исходить из языков программирования типа haskell или других типизированных языков.
Похоже, что конечная точка находится посередине и является источником всех видов несовместимости, которые могут возникнуть в будущем. Потому что теперь у меня есть 3 точки отказа: конечная точка, API и внешние typescript'ы (которые даже не скомпилированы и не доступны во время выполнения)
Существует ли более безопасный с точки зрения типов способ решения проблемы endpoint-in-the-middle?
Я рассмотрел несколько малоизвестных фуллстек-проектов, таких как Urweb и менее известный Django, но в них нет выразительного языка шаблонов, как в Svelte или Vue. Есть ли другие способы сделать автоматический безопасный по типу код конечной точки api?
Похоже, что это проблема единственного источника истины. Существует множество способов решения таких проблем.
Например: Можно генерировать типы из схем (например, из Swagger или самой Prisma). Или даже генерировать схемы из типов, как Typeorm.
Существуют такие инструменты, как swagger-typescript-api
и swagger-typescript-codegen
и другие, которые могут генерировать код для выполнения запросов и их разбора