如何在 TypeScript 中检查 Null 或 Undefined

在 TypeScript 中检查 Null 或 Undefined

How to check for Null or Undefined in TypeScript

要检查nullor undefined,将值与null
进行比较
undefined,例如if (name === undefined || name === null) {}如果满足这两个条件中的任何一个,变量将存储一个nullundefined值并且该if块将运行。

索引.ts
type Name = null | undefined | string; let name: Name; // ✅ check if undefined or null if (name === undefined || name === null) { console.log('✅ variable is undefined or null'); } else { console.log('✅ variable is NOT undefined or null'); } // ✅ check if NOT undefined or null if (name !== undefined && name !== null) { console.log('✅ variable is not undefined or null'); }

在我们的第一if条语句中,我们检查name变量是否存储一个
undefinednull值。

第二个示例显示如何检查变量是否为 NOTundefined
null

您可能还会看到上面比较的较短版本:

索引.ts
type Name = null | undefined | string; let name: Name; // ✅ check if undefined or null if (name == null) { console.log('✅ variable is undefined or null'); } else { console.log('✅ variable is NOT undefined or null'); } // ✅ check if NOT undefined or null if (name != null) { console.log('✅ variable is not undefined or null'); }

请注意,我们使用了松散等号==而不是严格等号===

当使用松散等于与比较时null,您将同时null与和
进行比较
undefined

索引.ts
// 👇️ true (loose equals) console.log(null == undefined);
明确和直接的代码通常比隐含的和编写不太直观的代码要好。

上面的语句在 TypeScript 中if用作
类型保护。

索引.ts
type Name = null | undefined | string; let name: Name; if (name !== null && name !== undefined) { // 👇️ let name: string console.log(name); console.log(name.toLowerCase()); }

Name类型可以null,undefinedstring.

if语句中,我们检查变量是否不是null和不是
undefined

如果满足这两个条件,TypeScript 就会知道该变量是 astring并允许我们使用特定于字符串的方法,例如toLowerCase().

如果我们尝试toLowerCase()直接调用该方法,而不检查变量是否不是nulland undefined,我们会得到一个错误。

索引.ts
type Name = null | undefined | string; let name: Name; // ⛔️ Object is possibly 'null' or 'undefined'. console.log(name.toLowerCase());

您还可以使用类型保护来检查变量是否为 a string,这在这种情况下是更直接的方法。

索引.ts
type Name = null | undefined | string; let name: Name; if (typeof name === 'string') { // ✅ TypeScript knows `name` is string console.log(name.toLowerCase()); }

一种检查变量是否是nullundefined将要使用可选链接 (?.) 运算符的更新方法。

索引.ts
type Name = null | undefined | string; let name: Name; console.log(name?.toLowerCase());


如果引用等于
or
可选链接 (?.)运算符会短路而不是抛出错误。nullundefined

这就是为什么 TypeScript 允许我们检查该toLowerCase()方法是否存在于name变量上,即使它可能是nullor undefined

您还可以使用这种方法来检查对象上是否存在深度嵌套的属性。

索引.ts
type Person = { address?: { country?: string; }; }; const obj: Person = {}; console.log(obj?.address?.country?.toLowerCase());

如果引用等于nullor undefined,可选的链接运算符将短路并返回undefined,并且不会抛出任何错误。