TypeScript
Using built-in types with DrupalClient.
Every helper method for the DrupalClient
has full TypeScript support.
The next-drupal
module ships with some default basic types you can use.
Built-in Types
DrupalNode
export interface DrupalNode extends JsonApiResourceWithPath { drupal_internal__nid: number drupal_internal__vid: number changed: string created: string title: string default_langcode: boolean sticky: boolean}
DrupalBlock
export interface DrupalBlock extends JsonApiResource { info: string}
DrupalMedia
export interface DrupalMedia extends JsonApiResource { drupal_internal__mid: string drupal_internal__vid: string changed: string created: string name: string}
DrupalFile
export interface DrupalFile extends JsonApiResource { drupal_internal__fid: string changed: string created: string filename: string uri: { value: string url: string } filesize: number filemime: string resourceIdObjMeta?: DrupalFileMeta}
export interface DrupalFileMeta { alt?: string title?: string width: number height: number}
DrupalTaxonomyTerm
export interface DrupalTaxonomyTerm extends JsonApiResourceWithPath { drupal_internal__tid: string changed: string default_langcode: boolean name: string description: string weight: number}
DrupalUser
export interface DrupalUser extends JsonApiResourceWithPath { drupal_internal__uid: string changed: string created: string default_langcode: boolean name: string}
DrupalView
/* eslint-disable @typescript-eslint/no-explicit-any */export interface DrupalView<T = Record<string, any>[]> { id: string results: T meta: JsonApiResponse["meta"] links: JsonApiResponse["links"]}
DrupalParagraph
export interface DrupalParagraph extends JsonApiResource { drupal_internal__id: number drupal_internal__revision_id: number}
PathAlias
export type PathAlias = { alias: string pid: number langcode: string}
DrupalMenuLinkContent
export interface DrupalMenuLinkContent { description: string enabled: boolean expanded: boolean id: string menu_name: string meta: Record<string, unknown> options: Record<string, unknown> parent: string provider: string route: { name: string parameters: Record<string, unknown> } title: string type: string url: string weight: string items?: DrupalMenuLinkContent[]}
DrupalTranslatedPath
export interface DrupalTranslatedPath { resolved: string isHomePath: boolean entity: { canonical: string type: string bundle: string id: string uuid: string langcode?: string } label?: string jsonapi?: { individual: string resourceName: string pathPrefix: string basePath: string entryPoint: string } meta?: Record<string, unknown> redirect?: { from: string to: string status: string }[]}
Extending Types
To extend the built-in types, create a file at types/drupal.d.ts
and extend the types as follows.
types/drupal.d.ts
interface Article extends DrupalNode { field_foo: string}