使用下面的代码,我得到了一个错误,它告诉我对象可能是未定义的,但是如果Array.some测试通过,那么find应该是定义的,对吗?
我错过了什么?
代码:
if (attributes.some((a) => a.key === "my_key")) {
my_key = checkout.attributes.find(
(a) => a.key === "my_key"
).value;
}
我试着挖掘 typescript 文档,但我没有找到任何相关的信息。
使用下面的代码,我得到了一个错误,它告诉我对象可能是未定义的,但是如果Array.some测试通过,那么find应该是定义的,对吗?
我错过了什么?
代码:
if (attributes.some((a) => a.key === "my_key")) {
my_key = checkout.attributes.find(
(a) => a.key === "my_key"
).value;
}
我试着挖掘 typescript 文档,但我没有找到任何相关的信息。
2条答案
按热度按时间k4ymrczo1#
find
调用不知道周围条件的含义。如果你想自己进行Assert,你可以使用as
关键字。我建议不要用
some
和find
迭代数组两次,只需调用find
一次,然后自己处理一个空结果:yrwegjxp2#
Find
可能返回undefined https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find所以这基本上是 typescript 是有帮助的。
如果你不介意
my_key
可能被设置为undefined,你可以这样做: