typescript语法---!

 // TODO(issue/24571): remove '!'.
  @Input() id !: string;

1.上面的!有什么用?
2.注释里面remove '!',是去除下面的!吗?

阅读 2k
2 个回答

!是显式赋值断言,加上!之后typescript就不会报告变量id还未赋值就被使用的错误。但只是抑制 typescript报编译错误而已,如果你真的没赋值就使用了id,仍然会出运行错。

注释里要求你去掉!,也就是不抑制 typescript报编译错误,这样你需要显式给id赋个初值,虽然可能组件初始化的时候外部也会给id赋值,加上!虽然可以抑制编译错,不一定能保证运行没错。

显示赋值断言
TypeScript中类型是明确的,语义更严谨
加上 ! 符号后将不再校验,不提示出警告而已