如何在 TypeScript 中检查未定义

检查 TypeScript 中的未定义

How to check for Undefined in TypeScript

要检查 TypeScript 中的未定义,请使用比较来检查值是否等于或不等于undefined,例如if (myValue === undefined) {}
if (myValue !== undefined) {}如果满足条件,if块将运行。

索引.ts
type Country = string | undefined; let country: Country; // ✅ Check if equal to undefined if (country === undefined) { console.log('value is undefined'); } else { console.log('value is NOT undefined'); } // ✅ Check if NOT equal to undefined if (country !== undefined) { console.log('value is NOT undefined'); }

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

第二个示例显示如何检查变量是否为 NOT undefined

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

索引.ts
type Country = string | undefined; let country: Country; if (country !== undefined) { // ✅ TypeScript knows that country is string // 👇️ let country: string console.log(country); console.log(country.toLowerCase()); }

类型Country可以是stringundefined

if语句中,我们检查值是否不是undefined

如果满足条件,TypeScript 知道唯一可能的类型是 astring并允许我们使用特定于字符串的方法,如. toLowerCase()

如果我们尝试toLowerCase()直接调用该方法,而不检查值是否为 not undefined,则会出现错误。

索引.ts
type Country = string | undefined; let country: Country; // ⛔️ Error: Object is possibly 'undefined'.ts(2532) console.log(country.toLowerCase());

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

索引.ts
type Country = string | undefined; let country: Country; if (typeof country === 'string') { // ✅ TypeScript knows that country is string // 👇️ let country: string console.log(country); console.log(country.toLowerCase()); }

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

索引.ts
type Country = string | undefined; let country: Country; console.log(country?.toLowerCase());


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

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

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

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

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