【发布时间】:2019-12-24 03:32:11
【问题描述】:
interface c {
state?: {b: string}
}
const x: c = { state: {b: 'c'}}
console.log(x.state.b)
在上面的代码中,在接口c中,state是一个可选属性。
但是,当我想在设置状态对象时访问它的属性 b 时,它给了我这个错误,对象可能是“未定义”。解决此问题的正确方法是什么?
【问题讨论】:
标签: typescript
interface c {
state?: {b: string}
}
const x: c = { state: {b: 'c'}}
console.log(x.state.b)
在上面的代码中,在接口c中,state是一个可选属性。
但是,当我想在设置状态对象时访问它的属性 b 时,它给了我这个错误,对象可能是“未定义”。解决此问题的正确方法是什么?
【问题讨论】:
标签: typescript
如果你确定一个可选的(标有?的字段)有一个值,这可以通过检查它的值来实现:
if(x.state !== undefined){
console.log(x.state.b)
}
您可以使用! 将其标记为存在:
console.log(x.state!.b)
【讨论】:
那是因为state 可以是未定义的,编译器并不总是知道它何时被明确定义。
您可以告诉它您确定它已定义,只需使用:x.state!.b
【讨论】: