A TypeScript definition for JSON data
JSON supports some primitive values: string, boolean, null, number. It also supports arrays and objects. To represent all of their various combinations, you can use the following as a type definition:
type JSON =
| string
| null
| number
| boolean
| JSON[]
| { [key: string]: JSON };
You'd think that you could use Record<string, JSON>, but the { [key: string]: JSON } workaround works instead. There's a lot of discussion about techniques people are using in this GitHub issue;