Тип для любого JSON -подобного объекта с указанными c подтипами - PullRequest
0 голосов
/ 30 апреля 2020

Мне нужно ограничить использование пользователями только JSON -подобных реквизитов (null, string, number, boolean и object или arrays с этими примитивами).

У меня есть тип для чистого JSON:

export type SerializableObject = { [key: string]: Serializable }
export interface SerializableArray extends Array<Serializable> {}
export type Serializable = null | string | number | boolean | SerializableArray | SerializableObject

, но некоторый тип не может быть назначен:

[...]    
Type '{ tabId: string; tabs: TabData[]; }' is not assignable to type 'SerializableObject'.

TabData:

interface TabData {
  label: string
  body: string
}

Возможно ли написать тип, который включает в себя более подробные c типов, но все же JSON -подобно?

1 Ответ

1 голос
/ 30 апреля 2020

Предлагаю заглянуть в библиотеку type-fest и ее тип JsonValue. В зависимости от вашего варианта использования он может подойти для вас.

...