在typescript中检查对象为null还是undefined的方法介绍

4,379 阅读2分钟

在typescript中检查对象的null或undefined

在这篇博文中,我将带你看看以下例子

  • 用if条件表达式检查未定义或空值

  • Typeguard null和undefined union检查

  • 使用Optional Chaining和nullish coalescing操作符

  • lodash/ramda isNil方法

在javascript中检查对象的空或未定义

在javascript中,如果条件用于检查空值或未定义值,那么Typescript是javascript的一个超集,它有一个额外的功能,即打字、断言,每一段代码都可以在typescripts中工作。

  
if(expression){  
console.log('Not null')}  

表达式必须被评估为真或假 表达式评估为假的值如下:

null
empty string spaces- ""
undefined
NAN - Not number zero
false.
让我们看一个例子

if ( obj !== 'undefined' && obj !== null ) {  
console.log('Object is Not Null');  
}  

这在javascript和typescripts中都适用。
让我们看一个在类型脚本中类型防护做同样事情的例子

类型守卫null和undefined联合检查

isNullOrUndefined函数被定义为接受对象类型,null类型被添加为带有类型防护语法的联盟类型,并返回布尔值。

  
function isNullOrUndefined(object: T | undefined | null): object is T {  
  return object !== undefined && object !== null;  
}  
  
let obj=null;  
  
console.log(isNullOrUndefined(obj)); //false  
let obj1=123;  
console.log(isNullOrUndefined(obj1)); //true  

使用Optional Chaining和nullish coalescing操作符

ES11中引入了Optional Chainingnullish coalescing操作符,Typescript在3.7版本中也实现了同样的功能。这两个操作都是检查空值和未定义值的。 可选链式操作符?用于检查账户是否为空或未定义,如果账户不是空或未定义,它将返回id,否则返回未定义。

let account={  
id:1}  
let deparmentid=account?.id?  
console.log(deparmentid)  

让我们举个例子来说明nullish凝聚运算符的情况

  
let account=null;  
let deparmentId=account??.id  
console.log(deparmentId)  

如果一个帐户不是空的或未定义的,返回id,否则返回帐户。

JQuery空或未定义

在javascript或jquery中检查,使用typeof操作符。
typeOf检查对象,如果对象是未定义或空的,则返回undefined。

  
if(typeof obj == "undefined"){  
 console.log('Object is null');  
}  

lodash/ramda isNil方法

lodash和rambda提供了isNil方法来检查对象是否被定义。

返回类型true/false - true - 为空值,否则为false
Accets对象来检查空值,让我们看一个例子

let obj;  
console.log(_.isNil(null))//true  
console.log(_.isNil(false))//false  
console.log(_.isNil(obj))//true