我很惊讶这个问题没有被问到,所以也许我忽略了显而易见的事情。我有一个应该是数字的表单字段。它的起始值为空,但是一旦输入并清除数字,它就是一个空字符串。看起来 JavaScript 将“”视为数字目的的 0。
所以,与其说...
if ((this.RetailPrice != null && this.RetailPrice != 0) || this.RetailPrice === 0) {
return this.RetailPrice;
}
有没有办法扩展 TypeScript 数字类型以具有 IsNullOrEmpty() 方法?或者类似的东西可以简化这个表达式?
最终,我想我正在寻找一些简单的东西......
if (this.RetailPrice) {
}
您可以简单地使用 typeof 。它还会检查 undefined、null、0 和 ""。
if(typeof RetailPrice!='undefined' && RetailPrice){
return this.RetailPrice;
}
也排除空白字符串
if(this.retailPrice && this.retailPrice.trim()){
//Implement your logic here
}
数字字段需要一些不同的条件: if (typeof(numValue) === '未定义' || numValue == null) { ... }
对于希望区分虚假和非虚假的打字稿用户,并且愿意安装(小)包,我发现 utility-types 非常有用。
import { isFalsy } from 'utility-types'
if (!isFalsy(foo)) {
// do something with foo, which you (and the compiler)
// know is not false | "" | 0 | null | undefined
}