ts中的?和!

112 阅读1分钟

?代表可选属性。

type Ib = {
  age?: number
}

如图,Ib类型中的age属性,时可选的。可能为number或undefined。

image.png


变量后使用 !:表示类型推断排除null、undefined。

type Ia = {
  name?: string,
  xxx?: Ib
}
type Ib = {
  age?: number
}
let a:Ia = {}
a.xxx!.age = 1

如图,上图的代码不会报错,因为a.xxx!使用了!排除了类型undefined,故可以继续访问age属性。
如果不写!进行类型推断,会报错,如下。

image.png