我一直在审查一个看起来像这样的案例:
loggedInUser$ = this.select().pipe(
filter(({ user }) => toBoolean(user)),
map(({ user: { firstName: f, lastName: l } }) => `${f} ${l}`)
);
只是好奇我们是否总是可以!!
代替此方法来获取布尔值以及是否。IIUC 的语义永远是一样的吗?
换句话说,我们应该总是能够toBoolean(...)
用!!
?
实现如下所示:
// @internal
export function toBoolean(value: any): boolean
{
return value != null && `${value}` !== 'false';
}
因此,根据答案,不同之处在于!!
“假”返回真,而“假”toBoolean()
返回false
。
这有点主观,但我个人觉得告诉用户使用!!
比其他一些甜的方法更好,因为我们应该先熟悉 Javascript 基础/语义,然后再从中构建。
因此,如果有人想要'false'
做假,那么他们必须明确地实现这一点。在这种情况下的应用程序是某人的名字实际上是“假”,我们希望允许它为真。
不,您的toBoolean
和!!
在语义上不等价。toBoolean
取决于字符串序列化,这是将值转换为布尔值的一种相当奇怪的方式。以下是导致不同结果的一些值:
toBoolean(0) == true
toBoolean('false') == false
toBoolean('') == true
toBoolean({toString(){return "false"}}) == false
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句