Я пишу общую c функцию в TypeScript, и я не могу найти способ извлечь тип элементов массива с учетом типа массива. Допустим, у меня есть такие данные:
interface Store {
posts: Post[]
users: User[]
}
const store: Store = {
posts: [post0, post1, post2],
users: []
}
, и моя функция принимает эти массивы и что-то с ними делает, скажем, возвращает первый элемент, когда что-то внутри.
function process<T>(storeItem: T[]): T | null {
if (storeItem) return storeItem[0]
return null
}
Теперь я хочу создать новую функцию, которая применяет эту функцию ко всем элементам магазина по очереди и создает новый объект. Эта функция выглядит как
const processed = Object.keys(store).reduce((accum, el) => {...accum, process(store[el])}, {})
Теперь я хочу определить тип результирующего объекта processed
как
type Processed<Store> = {
[K in keyof Store]: ArrayElement<Store[K]> | null
}
, но я не могу найти способ извлечь тип элементов массива с учетом типа массива, т.е. что-то эквивалентное ArrayElement
(это то, что я придумал). Как я мог это обойти?