什么意思是“空!”在TypeScript中?

时间:2019-10-28 13:51:45

标签: angular typescript ngxs

我正在寻找一个受ngxs/form-plugin启发的角度指令

搜索他们的代码后,我发现了一些有趣的东西:

@Input('ngxsForm')
  path: string = null!;

为什么在末尾使用否定字符?

1 个答案:

答案 0 :(得分:1)

!是一个打字稿运算符,断言一个表达式不是null。这称为non-null assertion operator,是为了简化严格的null检查而添加的。 !的作用基本上是使null脱离应用于它的表达式的类型。例如:

declare let x: string | null;
let y = x! // string

通常path: string = null是无效的,因为pathstring,并且不能为其分配nullnull!的类型为never,因为我们告诉编译器将nullnull的类型中取出,所以我们没有类型为never的类型。由于每种类型的子类型never可分配给string

我们最终得到的是一个字段(path),该字段的类型禁止将null分配为有效的null。这就是断言的性质,它们迫使编译器接受它知道无效的东西。有时,如果通过其他方式初始化字段(不确定您遇到的确切用例),这很有用。