我是TypeScript新手,在导入对象并尝试遍历对象内的数组后,我得到了'Object is possibly undefined'错误。
我尝试使用非空断言操作符,但没有效果。
这是一个代码沙箱。我不是特别满意的条件渲染解决方案中发现的App与ComponentWithProps。这是最好的方法吗?
任何和所有的反馈将是伟大的!谢谢你!
可能未定义的对象不是calendar
,但它是find函数调用的结果,该函数要么是数组元素的类型,要么是未定义的,如typescript 4.3.5声明中所示:
find<T>(value: T, ...): T | undefined;
您需要在访问name
属性之前断言它不是未定义的:
let time = calendar.hours.find((thisHour) => thisHour.number === 2);
if (time !== undefined) {
time = time.name;
}
或者,一个更优雅的解决方案,使用||
(逻辑或)短路评估提供了一个备用默认值:
let time = calendar.hours.find((thisHour) => thisHour.number === 2)?.name || 'fallbackName';
如果你的回退是undefined
(就像我的第一个解决方案),那么你可以只使用?
可选的链接语法,而不需要剩下的行:
let time = calendar.hours.find((thisHour) => thisHour.number === 2)?.name;