[英]How to resolve Typescript “Object is possibly undefined” warning when sorting objects by property value in Javascript
我有一组对象,我按其中一个属性的值进行排序。 排序工作正常,但我收到 Typescript 警告“对象可能是‘未定义’”
如何检查名称上的未定义值以解决此警告?
myItems.sort((a, b) => (a.name > b.name ? 1 : -1));
Typescript 告诉您代码中存在错误。 你的数组的类型显然是这样的:
({ name: string } | undefined)[]
这意味着当您遍历该数组时,您需要处理该项为undefined
的情况,否则(undefined).name
将引发运行时错误。
解决此问题的最简单方法可能是过滤您的数组,使其不再包含任何未定义的值:
interface MyItem { name: string }
const myItems: (MyItem | undefined)[] = [
{ name: 'c' },
{ name: 'b' },
undefined,
{ name: 'a' },
]
myItems
.filter((item): item is MyItem => !!item)
.sort((a, b) => (a.name > b.name ? 1 : -1));
这使用了一个过滤器 function ,它也是一个typeguard 。 运行后,返回的数组将是MyItem[]
类型,然后您的排序可以在知道所有项目都有值的情况下正确运行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.