Есть объект с такой структурой:
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.
}
Кроме того, это не слишком решило бы проблему типобезопасности.
Как в этом случае лучше поступить? Обобщенные типы вроде только в функциях можно использовать (или нет?). Есть ли что-то наподобие дженериков но не для функций, а для переменных или свойств объекта?