打字稿和值不能为空

Typescript and value can't be null

我有一个打字稿代码如下:

  constructor(c?: IContact) {
    this.id = c ? c.id : null;
    this.caseId = c ? c.caseId : null;
    this.name = c ? c.name : '';
    this.email = c ? c.email : '';
    this.isPrimary = c ? c.isPrimary : false;
  }

'c ?' 有什么作用?我如何确保当用户输入联系人时 c.email 不为空?

?:是一个ternary operator。它采用 condition ? valueIfTrue : valueIfFalse 的形式。因此,true ? "foo" : "bar" 将是 "foo",而 false ? "foo" : "bar" 将是 "bar"

注意条件不限于布尔值:它可以是任何值,条件根据值的truthiness进行评估。一个重要的假值是 nullundefined.

因此,c ? c.email : '' 表示如果 c 为 null 或未定义,则电子邮件默认为 '',否则使用 c.email 作为电子邮件。

如果你想确保 c.email 不为空,那么你可以添加一个检查:

this.email = c ? c.email : '';
if (this.email === null) {
    throw new ValueError("Email cannot be null.");
}

c ? c.A : null 确保 c 在尝试访问其属性之前不是未定义的。由于您的输入是可选的 ((c?: IContact)),因此您需要进行检查。

这是确保 c.email 不为空的代码 -

  constructor(c?: IContact) {
    this.id = c ? c.id : null;
    this.caseId = c ? c.caseId : null;
    this.name = c ? c.name : '';
    this.email = c ? (c.email || '') : '';
    this.isPrimary = c ? c.isPrimary : false;
  }

您可以将 || 替换为 ??。效果一样。