?
?代表可选属性。
type Ib = {
age?: number
}
如图,Ib类型中的age属性,时可选的。可能为number或undefined。
!
变量后使用 !:表示类型推断排除null、undefined。
type Ia = {
name?: string,
xxx?: Ib
}
type Ib = {
age?: number
}
let a:Ia = {}
a.xxx!.age = 1
如图,上图的代码不会报错,因为a.xxx!使用了!排除了类型undefined,故可以继续访问age属性。
如果不写!进行类型推断,会报错,如下。