gpt4 book ai didi

javascript - Promise.allSettled typescript 数组推理

转载 作者:行者123 更新时间:2023-12-02 20:54:11 25 4
gpt4 key购买 nike

我希望 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')

最佳答案

以下函数对于任何 PromiseSettled 都是通用的

function assertFulfilled<T>(item: PromiseSettledResult<T>): item is PromiseFulfilledResult<T> {
return item.status === 'fulfilled';
}

关于javascript - Promise.allSettled typescript 数组推理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61528979/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com