(!class | | case2){}在typescript中是如何工作的?

(!class | | case2){}在typescript中是如何工作的?,typescript,Typescript,我试图理解这段代码,特别是第三行: 我在这个网站上找到了这个答案: 整个代码如下: 是不是!名称=此处是否确定为真?我只是想理解,否则我只能记住这句话: if (!name || name.length > 20) 如果name是字符串,将首先选中!名称。唯一错误的字符串是空字符串,因此!只有当name是空字符串时,name才会被实现:dog.name='将调用setter并实现!name,因此if块将运行,并抛出一个错误 if (!name || name.length <

我试图理解这段代码,特别是第三行:

我在这个网站上找到了这个答案:

整个代码如下:

是不是
!名称
=此处是否确定为真?我只是想理解,否则我只能记住这句话:

if (!name || name.length > 20)
如果
name
是字符串,将首先选中
!名称
。唯一错误的字符串是空字符串,因此
!只有当
name
是空字符串时,name
才会被实现:
dog.name='
将调用setter并实现
!name
,因此
if
块将运行,并抛出一个错误

if (!name || name.length < 20)
// where name is the empty string:
if (!'' || name.length < 20)
if (true || name.length < 20)
if (true)
如果(!name | | name.length<20)
//其中name是空字符串:
如果(!''| | name.length<20)
if(true | | name.length<20)
如果(真)
否则,
name
不是空字符串,因此将测试
name.length
。如果长度为
<20
,则整个条件的计算结果为
true
,否则计算结果为
false


因此,整个
name
setter会这样做:如果参数是空字符串,或者如果参数的字符串是20个字符或更长,则会抛出一个错误。否则,实例的
\u name
属性将设置为参数。

谢谢!除了(可能是一个愚蠢的问题)之外,我完全理解了……但什么是
这里是什么意思?
反转表达式的真实性。真实值将变为
false
。错误的值将变成
true
。这里有一个有用的资源,可以了解js/ts中什么是truthy和falsy(绿色是truthy,白色是falsy):请直接将相关代码放入问题中,而不是通过图片。