如何解决Typescript 解构函数的返回值,可以是 void 或对象
我使用了一个包含以下声明的函数的包:
const getList: (params?: ListRequestParams | undefined) => Promise<void | {
items: any[];
pageInfo: PageInfo;
}>
我尝试使用以下方法解构调用此函数的返回值:
const {items,pageInfo} = await getList(some_param);
但它可能由于“void”部分而不起作用。使用临时值有效,但看起来很笨拙。
const temp = await getList(some_params);
if(temp !== undefined)
{
const { items,pageInfo } = temp;
}
只是想知道在这种情况下有更好的解构方法。谢谢。
解决方法
确实,我们无法解构 void
/undefined
,这是一件好事:在返回 void
时也需要处理这种情况,在您的示例中带有保护子句if not undefined then ...
如果你想让你的代码专注于快乐路径并避免临时变量,你可以使用Maybe
类型(npm)及其方法map()
:
Maybe
.ofNullable(await getList(some_params))
.map(({ items,pageInfo }) => { /*...*/ });
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。