Web development keeps changing, and it's all about building fast, reliable websites and apps. That's why many developers use tools like Strapi, a headless CMS, and Next.js.
Hey, I have opened an issue in this articleās GitHub repo. Basically, itās very frustrating to try and use nested component data. Also I think that there are still some issues with how the API responds and what the types actually represent (nested data and attribute keys, no arrays where they should actually be). Could be I am using this the wrong way or thereās still some work to do to get everything 100% working. Some examples in the issue that Iāve mentioned.
if you are working in a monorepo you can create a dev dependency in the frontend module on the strapi module and then import the contentTypes.d.ts. no need to copy the file.
I found some errors in the types.ts file. for example:
in type MediaValue it should be APIResponse and not APIResponseData
Normally this is something that should be working. Can you give more context on the issue your are having. Also, are you sure that your project is loading types from types found in types/generated/components.d.ts.
Which type are you using exactly that return this undefined value? In any case, even required fields can be undefined when ādraft and publishā is enabled.
I also struggled with setting up Strapi with TypeScript in a monorepo. To help, I created a starter template that combines Strapi, TypeScript, and Next.js with Turborepo (a monorepo solution from Vercel). It might be just what youāre looking for!
Hi ,
The Next.js frontend is more or less type-safe. As you know, Strapi allows you to request only specific fields (e.g., slug and title) via the āpopulateā parameter in the query URL, even if the content-type has many more fields.
However, the generated types always include all possible fields of the content-type, regardless of what you request in your query!
So while you have the complete type information, the actual data you receive may not include all fields. If you need 100% type safety, I would recommend using GraphQL.
I made a small module that looks at all your files in api and components and by them make a folder with types
Try adding the package to the backend folder
npm i create-strapi-types
And then in the root (in terminal) run the command
npx create-strapi-types frontend
The frontend option creates the folder and types in the
/frontend/src/types/types.ts
This will create all api types and components for you
/backend/types/types.ts
Going to check it out. Hey, would you be willing to write a blog post quickly showcasing this pacakage and your motivation for creating it and how it fits in your work flow. We can share it on our blog to give it some more visibility.
@Paul_Brats Hi Paul, thanks for your in depth tutorial. But Iām running into a problem⦠inside the types file saw the MediaValue type that should return a ResponseCollection whenever a media field accepts multiple files: