打字稿和值不能为空
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进行评估。一个重要的假值是 null
和 undefined
.
因此,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;
}
您可以将 ||
替换为 ??
。效果一样。
我有一个打字稿代码如下:
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进行评估。一个重要的假值是 null
和 undefined
.
因此,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;
}
您可以将 ||
替换为 ??
。效果一样。