Как типизировать такой объект данных?

Есть объект с такой структурой:
const someData = {
    isFetched: false,
    pagination: {},
    data: // ???
}


isFetched - это всегда boolean

pagination всегда такой тип: (и она может быть, а может не быть)
type PagePagination = {
  totalDocs: number
  totalPages: number
  page: number
}


А вот data предполагает несколько возможных типов данных. Их число весьма ограниченно (7-8), и они заранее известны. Тем не менее, создавая интерфейс для вышеуказанной const someData глупо указывать что-то вроде:
interface SomeData = {
    isFetched: boolean,
    pagination?: PagePagination ,
    data: PossibleType1 |  PossibleType2 | PossibleType3 | PossibleType4 | PossibleType5 /// ...etc.
}


Кроме того, это не слишком решило бы проблему типобезопасности.
Как в этом случае лучше поступить? Обобщенные типы вроде только в функциях можно использовать (или нет?). Есть ли что-то наподобие дженериков но не для функций, а для переменных или свойств объекта?
  • Вопрос задан
  • 84 просмотра
Решения вопроса 1
Zraza
@Zraza
Помог ответ? Отметь решением!
Нет, обобщенные типы можно использовать не только в функциях
type SomeData<Data = any> = {
    data: Data[];
}
const a: SomeData<number> = {data: [1,2,3]};
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы