/**
- @param { Promise } promise
- @param { Object= } errorExt - Additional Information you can pass to the err object
- @return { Promise }
*/
/**
-
泛型约束 定义了2个 泛型约束 T U
-
function to<<T, U = Error> 对这个函数定义2个泛型约束;用于其内部使用
-
(promise: Promise,errorExt?: object) ,第一个函数类型是个Promise,类型泛指T,第二个参数是 错误
-
: Promise<[U | null, T | undefined]>,返回值是Promise,内部的返回值是数组[U | null, T | undefined]
-
因为返回值定义了内部返回值,所以在.then中要申明<[null, T]>
-
因为返回值定义了内部返回值,所以在.catch中要申明<[U, undefined]>
*/
export function to<T, U = Error>(promise: Promise,errorExt?: object): Promise<[U | null, T | undefined]> {
return promise
.then<[null, T]>((data: T) => [null, data])
.catch<[U, undefined]>((err: U) => {
if (errorExt) {
Object.assign(err, errorExt);
}return [err, undefined]; });
}
export default to;