打字稿中变量之间的区别

Posted

技术标签:

【中文标题】打字稿中变量之间的区别【英文标题】:difference between variables in typescript 【发布时间】:2021-07-29 13:20:49 【问题描述】:

这在 Typescript 中是什么意思。"!option""option" 不一样???

const limit = !options.limit || options.limit === NaN ? 0 : options.limit

【问题讨论】:

如果在if 条件下使用,则毫无意义。如果这个表达式被分配给一个变量,如果options.limit 是假的,它将返回true。如果它是真的,它将返回option.limit 两者都不同且相反,每个不是运算符(!变量),一个是直接值。 ! 否定任何 options.limit 是 .. 你展示的也没有类型,只是JS。 【参考方案1】:

关于您更新的代码:

const limit = !options.limit || options.limit === NaN ? 0 : options.limit
如果options.limitfalsy,这将设置limit = 0。否则,它将使用options.limit 第二个条件不是必需的,因为NaN 是一个假值。它已经包含在!options.limit 条件中。 另外,options.limit === NaN 永远不会是真的,即使options.limitNaN 也不会。您需要使用isNaN()Number.isNaN() 来检查NaN

您当前的代码相当于:

const limit = options.limit || 0.

【讨论】:

和有什么区别??和 ||然后?我可以把它写成 const limit = options.limit ?? 0对吗? @grooot ?? 只检查 null 和 undefeined。 || 检查所有 falsy 值:null、undefined、""、false、0、NaN @grooot 为什么你的代码中有=== NaN这个条件?只想知道options.limit 的可能值。你得到像"50"这样的字符串格式的数字吗?

以上是关于打字稿中变量之间的区别的主要内容,如果未能解决你的问题,请参考以下文章

通用类型(T)与打字稿中的任何类型有啥区别

打字稿中数组的两种写作有啥区别

打字稿中 obj.prop 和 obj['prop'] 的区别?

打字稿中的可选属性类

如何在打字稿中声明全局变量

如何计算打字稿中两个日期之间的时间