gpt4 book ai didi

javascript - lodash find() 的流式注解

转载 作者:行者123 更新时间:2023-11-29 23:43:08 27 4
gpt4 key购买 nike

在一个 javascript 函数中,我使用 lodash _.find() 从数组中选择一个项目。我已经安装了来自 flow-typed 的 lodash 定义,它正在运行并且可用。

我弄清楚如何使用带注释的 _.find() 方法的唯一方法是在不向执行查找的常量添加类型之后对其进行类型转换:

import { find } from 'lodash';

...

const items: Array<Item> = user.items;
const item = find(items, {"id", selectedId});

let finalItem: Item = ((item: any): Item);
...

我没有收到任何错误但是,我不知道我是否正确地完成了此操作,或者我是否只是通过将类型安全转换为“任何”首先并没有给自己带来任何好处。是否有一种“更合适”的方式来同时注释/使用 Lodash 方法和流类型?

此外,如果我做得正确,是否有一种语法可用于在一行中进行转换,类似于:

const item: ((item: any): Item) = find(items, {"id": selectedId });

但正确。

最佳答案

您从 _.find 获得的内容被键入为 Item|void。使用 _.find 的结果时,您应该处理所有情况:nullundefinedItem

要确保在其余代码中处理的是 Item 类型的内容,您可以做的是在任何其他情况下都失败。

const items: Array<Item> = user.items;
const item = find(items, {"id", selectedId});
if (item === null || item === undefined) {
throw new Error(`Could not find item with id ${selectedId} in items`}
}

// In lines below item is type of Item
...

如果在 items 数组中找不到 id,这将引发错误。您可能希望以不同的方式处理 nullundefined 结果,以避免在这种情况下停止您的程序。

_.find 的结果强制转换为 Item 可能不是您想要实现的解决方案,因为 nullundefined 将被键入为 Item,这将在使用 item 值时引发运行时错误。

关于javascript - lodash find() 的流式注解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44766336/

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