TypeScript
Using types for JSON:API responses
We have included a few types you can use to properly type your JSON:API responses:
DrupalNode
Retrieving an `article`
node by id:
import { DrupalNode } from "next-drupal"
const node = await getResource<DrupalNode>( "node--article", "e96869cb-2b58-4863-ba18-1480f6696bb9")
Retrieving a `news`
node by path:
import { DrupalNode } from "next-drupal"
const node = await getResourceByPath<DrupalNode>("/path/to/news")
Retrieving a collection of `articles`
from context:
import { DrupalNode } from "next-drupal"
const articles = await getResourceCollectionFromContext<DrupalNode[]>( "node--article", context)
Available types
`DrupalNode`
`DrupalMedia`
`DrupalTaxonomyTerm`
`DrupalBlock`
`DrupalUser`
`DrupalMenuLinkContent`
You can see a list of type definitions here.
getStaticProps
You can use the type definition to type your getStaticProps responses as follows:
pages/index.tsx
import { getPathsFromContext, getResourceCollectionFromContext, DrupalNode,} from "next-drupal"
interface BlogPageProps { nodes: DrupalNode[] }
export default function BlogPage({ nodes }: BlogPageProps) { return // .....}
export async function getStaticProps( context): Promise<GetStaticPropsResult<BlogPageProps>> { const nodes = await getResourceCollectionFromContext<DrupalNode[]>( "node--article", context )
return { props: { nodes, }, }}