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