我努力让打字稿理解我已经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 ×1