Я хочу, чтобы Typescript выводил типы в отфильтрованном массиве.
Я фильтрую свои результаты на основе статуса "отклонен" или "заполнен" (из Promise.allSettled).
По какой-то причине Typescript не выводит мои результаты фильтрации.
Вот минимальный пример того, чего я пытаюсь достичь:
type FullFilledResults = {
status: 'fullfilled';
value: any;
}
type RejectResults = {
status: 'rejected';
reason: string;
}
type Results = RejectResults | FullFilledResults
const results: Results[] = [{
status: 'rejected',
reason: 'err'
}, {
status: 'fullfilled',
value: {}
}]
// Type infer Results[] but I want FullFilledResults[]
const fullfilledResults = results.filter(v => v.status === 'fullfilled')
// Type infer Results[] but I want RejectedResults[]
const rejectedResults = results.filter(v => v.status === 'rejected')