typescript - (!class || case2){} 如何在打字稿中工作?
解决方案
该行:
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
。
因此,整个name
setter 会:如果参数是空字符串,或者参数的字符串是 20 个字符或更长,则会抛出错误。否则,_name
将实例的属性设置为参数。
推荐阅读
- java - Java.lang.IndexOutOfBoundsException Index 1 out of bounds for length 1
- node.js - Discord.js 错误:静音嵌入消息代码
- sql - 使用 for 循环执行超过 1 个数据操作 - Node js
- angularjs - 我可以在没有自定义标签或选择器的情况下包含 angular 1 组件吗
- javascript - 我尝试验证一个不应允许任何字符串的文本框
- windows - 用于 32 个 IP 的并行跟踪路由的 windows cmd 批处理文件
- python - 如何对多个值应用正则表达式以在熊猫中创建新列?
- hyperlink - 激活粘贴的链接
- .net - .NET 表单:更改 DataSource 后标记更改的 DataGridView 单元格
- flutter - 在颤动中读取带有标题的csv文件映射