home.social

#tsmorph — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #tsmorph, aggregated by home.social.

fetched live
  1. Как сделать типобезопасный клиент для Strapi: разбираем вывод типов из populate на уровне компилятора

    У любого запроса к Strapi есть неприятное свойство: форма ответа зависит от того, что вы попросили. Запросили статью без populate — в ответе только скалярные поля. Добавили populate: { category: true } — появилась вложенная категория. Добавили fields: ['name'] внутри populate — категория пришла обрезанной. Один и тот же эндпоинт возвращает десятки разных форм, и статический TypeScript-интерфейс ни одну из них честно не описывает: он либо врёт (обещает поля, которых в этом конкретном ответе нет), либо бесполезен ( any ). В этой статье я разберу, как решить эту проблему кодогенерацией: как достать схему из работающего Strapi, сгенерировать по ней TypeScript-клиент и — самое интересное — как заставить систему типов вывести форму ответа прямо из аргумента populate на этапе компиляции. Подход Prisma-подобный: возвращаемый тип метода зависит от того, что вы передали в вызов. Код — на TypeScript; клиент, на примере которого я всё показываю, open-source под MIT, ссылка в конце. Как это устроено

    habr.com/ru/articles/1059984/

    #TypeScript #Strapi #кодогенерация #вывод_типов #conditional_types #дженерики #tsmorph #Headless_CMS #Prisma #типобезопасность