小编sno*_*oob的帖子

Typescript 无法理解对象数组中未定义值的过滤器

我努力让打字稿理解我已经project在这个(缩短的)示例中处理一个属性()的未定义情况:

interface Entry {
    id: number
    project?: Project
    isPublished?: boolean
}

entries
     .filter(entry => !!entry.project)
     .map(entry => ({
           title: entry.project.title
     }))
Run Code Online (Sandbox Code Playgroud)

(这里entries是 s 的数组Entry),编译器在属性上抱怨entry.project.title,project即使TS2532: Object is possibly 'undefined'我有过滤器删除未定义的。其他可选属性在过滤后仍然是可选的,因此我无法使用Required接口:/

如何让 TS 明白该属性是在 map 函数中明确定义的?

谢谢

-- 编辑:添加了另一个可选属性/说明作为对建议答案的响应,这将使所有属性成为必需

typescript

4
推荐指数
1
解决办法
4577
查看次数

标签 统计

typescript ×1