对象可能是“未定义” - 在包含未定义检查的过滤器之后
Posted
技术标签:
【中文标题】对象可能是“未定义” - 在包含未定义检查的过滤器之后【英文标题】:Object is possibly 'undefined' - after filter that contains check for undefined 【发布时间】:2018-07-20 05:11:43 【问题描述】:我正在对这样的数组进行操作:
.filter(key => actions && actions[key])
.forEach(key => actions[key](event, dispatch));
但我在 forEach
actions
: Object is possibly 'undefined'
上遇到 TypeScript 错误。
但它不能是'undefined'
,因为它会针对那些确实具有actions
的条目进行过滤。
【问题讨论】:
这总是可能是当前打字稿语言的错误或不足 @Andreas TS 错误专门针对actions
,而不是actions[key]
【参考方案1】:
我认为 TypeScript 编译器不够聪明,无法意识到 filter
方法已经从数组中删除了所有 undefined
条目。在这种情况下,您可以告诉编译器 actions[key]
是通过使用非空断言运算符 !
定义的,如本答案所述:
https://***.com/a/40350534/1063392
.filter(key => actions && actions[key])
.forEach(key => actions![key](event, dispatch));
【讨论】:
以上是关于对象可能是“未定义” - 在包含未定义检查的过滤器之后的主要内容,如果未能解决你的问题,请参考以下文章