如何告诉 Typescript *在这种情况下*函数的 return 类型永远不会为 null

How to tell Typescript that *in this instance* a function's return type is never null

我正在尝试让 typescript strictNullChecks 在 Angular 5 项目中工作。

我有一个表格:

this.signinForm = this.fb.group({
  emailAddress: ['', NGValidators.isEmail()],
  password: ['', Validators.required],
  rememberMe: false,
});

我可以使用 this.signinForm.get('rememberMe') 获得 rememberMe 控件。然而,FormGroup#get 方法的 return 是 AbstractControl | null,因此打字稿不喜欢 this.signinForm.get('rememberMe').value(因为它认为 this.signinForm.get('rememberMe') 可能为空)。

是否可以告诉 typescript 在这种情况下this.signinForm.get('rememberMe') 的 return 总是 AbstractControl 而不是 AbstractControl | null?

我们可以通过用 as [type] 包装表达式来强制输入 TypeScript。在您的情况下,它将是 (this.signinForm.get('rememberMe') as AbstractControl).value.

使用!运算符:

this.signinForm.get('rememberMe')!.value