lodash find() 的流式注解
flow-type annotations for lodash find()
在 javascript 函数中,我使用 lodash _.find() 来 select 数组中的一个项目。我已经从 flow-typed 安装了 lodash 定义,它正在工作并且可用。
我想出如何使用带注释的 _.find() 方法的唯一方法是在不向我执行查找的 const 添加类型后对其进行类型转换:
import { find } from 'lodash';
...
const items: Array<Item> = user.items;
const item = find(items, {"id", selectedId});
let finalItem: Item = ((item: any): Item);
...
我没有收到任何错误但是,我不知道我是否正确地完成了此操作,或者我是否只是将类型安全短路了首先将其转换为 'any' 并没有给自己带来任何好处。有没有 "more proper" 方式 annotating/using Lodash 方法和 flow-type 结合在一起?
此外,如果我做对了,是否有一种语法可用于在一行中进行转换,类似于:
const item: ((item: any): Item) = find(items, {"id": selectedId });
但正确。
您从 _.find
获得的内容输入为 Item|void
。当使用 _.find
的结果时,您应该处理所有情况:null
、undefined
或 Item
。
您可以做些什么来确保在其余代码中处理的是 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
,这将引发错误。您可能希望以不同的方式处理 null
和 undefined
结果,以避免在这种情况下停止您的程序。
将 _.find
的结果强制转换为 Item
可能不是您想要实施的解决方案,因为 null
或 undefined
将被键入为 Item
使用 item
值时会抛出运行时错误。
在 javascript 函数中,我使用 lodash _.find() 来 select 数组中的一个项目。我已经从 flow-typed 安装了 lodash 定义,它正在工作并且可用。
我想出如何使用带注释的 _.find() 方法的唯一方法是在不向我执行查找的 const 添加类型后对其进行类型转换:
import { find } from 'lodash';
...
const items: Array<Item> = user.items;
const item = find(items, {"id", selectedId});
let finalItem: Item = ((item: any): Item);
...
我没有收到任何错误但是,我不知道我是否正确地完成了此操作,或者我是否只是将类型安全短路了首先将其转换为 'any' 并没有给自己带来任何好处。有没有 "more proper" 方式 annotating/using Lodash 方法和 flow-type 结合在一起?
此外,如果我做对了,是否有一种语法可用于在一行中进行转换,类似于:
const item: ((item: any): Item) = find(items, {"id": selectedId });
但正确。
您从 _.find
获得的内容输入为 Item|void
。当使用 _.find
的结果时,您应该处理所有情况:null
、undefined
或 Item
。
您可以做些什么来确保在其余代码中处理的是 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
,这将引发错误。您可能希望以不同的方式处理 null
和 undefined
结果,以避免在这种情况下停止您的程序。
将 _.find
的结果强制转换为 Item
可能不是您想要实施的解决方案,因为 null
或 undefined
将被键入为 Item
使用 item
值时会抛出运行时错误。