检查 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
可以是string
或。undefined
在if
语句中,我们检查值是否不是undefined
。
如果满足条件,TypeScript 知道唯一可能的类型是 a
string
并允许我们使用特定于字符串的方法,如. 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()); }
一种检查变量是否是null
或undefined
将要使用可选链接 (?.) 运算符的更新方法。
索引.ts
type Country = string | undefined; let country: Country; console.log(country?.toLowerCase());
如果引用等于or ,
可选链接 (?.)运算符会短路而不是抛出错误。null
undefined
这就是为什么 TypeScript 允许我们检查该toLowerCase()
方法是否存在于country
变量上,即使它可能是undefined
.
您还可以使用这种方法来检查对象上是否存在深度嵌套的属性。
索引.ts
type Person = { address?: { country?: string; }; }; const obj: Person = {}; console.log(obj?.address?.country?.toLowerCase());
如果引用等于null
or undefined
,可选的链接运算符将短路并返回undefined
,并且不会抛出任何错误。