ts中Promise返回值二选一
async function test<T extends unknown>(promise: Promise<T>): Promise<[any, null] | [null, T]> {
try {
const data = await promise
return Promise.resolve([null, data])
} catch (err) {
return Promise.resolve([err, null])
}
}
async function main() {
const [err, res] = await test<number>(new Promise(() => 123))
if (err) return
console.log(res) //推导的类型为:const res: number | null
// 我希望的是,如果err存在,res为null
//如果err不存在,res为T
}