由于TypeScript是强类型的,简单地使用if(){}来检查null和undefined听起来并不正确。

TypeScript有专门的函数或语法吗?


当前回答

TypeScript有专门的函数或语法糖吗

TypeScript完全理解JavaScript版本== null。

通过这样的检查,TypeScript会正确地排除null和undefined。

More

https://basarat.gitbook.io/typescript/recap/null-undefined

其他回答

一个更快更短的空检查符号可以是:

value == null ? "UNDEFINED" : value

这一行相当于:

if(value == null) {
       console.log("UNDEFINED")
} else {
    console.log(value)
}

特别是当你有很多空校验的时候它是一个很好的简短符号。

因为TypeScript是ES6 JavaScript的类型化超集。和lodash是一个javascript库。

使用lodash检查value是否为空或未定义可以使用_.isNil()来完成。

_.isNil(value)

参数

value(*):要检查的值。

返回

(boolean):如果值为空则返回true,否则返回false。

例子

_.isNil(null);
// => true

_.isNil(void 0);
// => true

_.isNil(NaN);
// => false

Link

Lodash文档

更新(2020年9月4日)

你现在可以使用??运算符来验证空值和未定义的“值”并设置默认值。例如:

const foo = null;
const bar = foo ?? 'exampleValue';
console.log(bar); // This will print 'exampleValue' due to the value condition of the foo constant, in this case, a null value

作为一种详细的方式,如果你想比较空值和未定义值,使用下面的示例代码作为参考:

const incomingValue : string = undefined;
const somethingToCompare : string = incomingValue; // If the line above is not declared, TypeScript will return an excepion

if (somethingToCompare == (undefined || null)) {
  console.log(`Incoming value is: ${somethingToCompare}`);
}

如果incomingValue没有声明,TypeScript应该返回一个异常。如果声明了但没有定义,console.log()将返回“Incoming value is: undefined”。注意,我们没有使用严格的等于运算符。

“正确”的方法(检查其他答案的细节),如果incomingValue不是一个布尔类型,只是评估它的值是否为真,这将根据常量/变量类型进行评估。真正的字符串必须使用= "赋值显式地定义为字符串。否则,它将被赋值为false。让我们使用相同的上下文来检查这个情况:

const incomingValue : string = undefined;
const somethingToCompare0 : string = 'Trumpet';
const somethingToCompare1 : string = incomingValue;

if (somethingToCompare0) {
  console.log(`somethingToCompare0 is: ${somethingToCompare0}`); // Will return "somethingToCompare0 is: Trumpet"
}

// Now, we will evaluate the second constant
if (somethingToCompare1) {
  console.log(`somethingToCompare1 is: ${somethingToCompare1}`); // Launched if incomingValue is defined
} else {
  console.log(`somethingToCompare1 is: ${somethingToCompare1}`); // Launched if incomingValue is undefined. Will return "somethingToCompare1 is: undefined"
}

TypeScript有专门的函数或语法糖吗

TypeScript完全理解JavaScript版本== null。

通过这样的检查,TypeScript会正确地排除null和undefined。

More

https://basarat.gitbook.io/typescript/recap/null-undefined

你可以使用

if(x === undefined)