interface c {
state?: {b: string}
}
const x: c = { state: {b: 'c'}}
console.log(x.state.b)
在上面的代码中,在接口c中,状态是一个可选属性。
但是,无论何时我想访问状态对象的属性b,只要设置它,这都会给我这个错误,对象可能是“未定义的”。解决此问题的正确方法是什么?
答案 0 :(得分:2)
这是因为state
可以是未定义的,并且编译器并不总是知道何时明确定义它。
您可以确定它已定义,只需使用:x.state!.b
答案 1 :(得分:1)
如果您确定可选字段(标有?
的值),可以通过检查其值来实现:
if(x.state !== undefined){
console.log(x.state.b)
}
您可以使用!
将其标记为存在:
console.log(x.state!.b)