我正在寻找一个受ngxs/form-plugin启发的角度指令
搜索他们的代码后,我发现了一些有趣的东西:
@Input('ngxsForm')
path: string = null!;
为什么在空末尾使用否定字符?
答案 0 :(得分:1)
!
是一个打字稿运算符,断言一个表达式不是null
。这称为non-null assertion operator,是为了简化严格的null检查而添加的。 !
的作用基本上是使null
脱离应用于它的表达式的类型。例如:
declare let x: string | null;
let y = x! // string
通常path: string = null
是无效的,因为path
是string
,并且不能为其分配null
。 null!
的类型为never
,因为我们告诉编译器将null
从null
的类型中取出,所以我们没有类型为never
的类型。由于每种类型的子类型never
可分配给string
我们最终得到的是一个字段(path
),该字段的类型禁止将null
分配为有效的null
。这就是断言的性质,它们迫使编译器接受它知道无效的东西。有时,如果通过其他方式初始化字段(不确定您遇到的确切用例),这很有用。