哪种是处理可选输入参数的更好方法?
@Input() public isActive?: boolean;
或
@Input() public isActive: boolean = undefined;
还有一个难题,下面的代码会导致什么,为什么(如果未在视图isActive
中指定)?
@Input() public isActive?: boolean = undefined;
使用
<app-sth [otherParameter]="true"></app-sth>
答案 0 :(得分:1)
哪种是处理可选输入参数的更好方法?
这两个语句之间没有区别:@Input() public isActive?: boolean
和@Input() public isActive: boolean = undefined
。
两者均未定义。
尚未分配值的变量的类型为undefined。
第一条语句尚未分配值,因此未定义。第二条语句已分配了未定义的类型,因此它是未定义的。
另一方面,即使您为属性分配了null
的值,例如@Input() public isActive: boolean = null;
,JS引擎将 不 将属性评估为假。因为null既不是true也不是false。
如果您对null和undefined之间的区别感到好奇,可以在这里阅读:What is the difference between null and undefined in JavaScript?
还有一个小难题,以下代码会导致什么以及为什么 (如果未在视图中指定isActive)?
没什么,不会抛出任何错误,因为您已将该属性声明为“可选”,如果您来自其他语言,则可能会将其称为“可空”。