我有一个函数,它有时会返回:
承诺< Value >(如果是无错误)、
如果< void >存在错误,请承诺。
async function myFunction(
a: A
b: B
) {
try {
const variable = await getSomething(a,b);
return getValue(variable);
} catch(e) {
return throwError(e);
}
}
我的trowError函数如下所示:
export default function throwError(error: Error | any) {
if (error instanceof Error) {
throw error;
}
throw new Error(String(error));
}
我做了type MyType = Promise<Value | void>
;
并将上面一行作为myFunction的返回类型,它不会在那里触发错误。
但如果我试图在另一个函数中使用该函数的一些值,我将面临错误:
属性val 1不存在'void'类型|值'
async function anotherFunction() {
// do some stuff
const { val1 } = await myFunction(x, y);
// do rest stuff
}
请您给予一些帮助或建议!!!
1条答案
按热度按时间ncecgwcz1#
throwError
函数返回never
:这意味着
myFunction
实际上返回Promise<Value | never>
,但由于never
是 * 空联合类型 *,因此它被简化为Promise<Value>
:另外,我认为这里不需要显式的类型注解。TypeScript应该能够推断出这个函数的返回类型。