首页 > 解决方案 > (!class || cas​​e2){} 如何在打字稿中工作?

问题描述

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

在此处输入图像描述

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

在此处输入图像描述

整个代码在这里:

在此处输入图像描述 在此处输入图像描述

此处是否!name= true 是如何确定的?我只是想理解,否则我只能记住它

标签: typescript

解决方案


该行:

if (!name || name.length > 20)

wherename是一个字符串,将首先检查!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)

否则, thename不是空字符串,因此name.length会被测试。如果长度为< 20,则整个条件计算为true,否则计算为false

因此,整个namesetter 会:如果参数是空字符串,或者参数的字符串是 20 个字符或更长,则会抛出错误。否则,_name将实例的属性设置为参数。


推荐阅读