在 TypeScript 中检查 Null
How to check for Null in TypeScript
要在 TypeScript 中检查 null,请使用比较来检查值是否等于或不等于null
,例如if (myValue === null) {}
或
if (myValue !== null) {}
。如果满足条件,if
块将运行。
type Color = string | null; const color: Color = null; // ✅ Check if null if (color === null) { console.log('value is equal to null'); } else { console.log('value is NOT equal to null'); } // ✅ Check if NOT equal to null if (color !== null) { console.log('value is NOT equal to null'); } // ✅ Check if value is equal to null or undefined if (color == null) { console.log('value is equal to null or undefined'); } // ✅ Check if value is NOT equal to null or undefined if (color != null) { console.log('value is NOT equal to null or undefined'); }
在我们的第一if
条语句中,我们检查color
变量是否存储了一个null
值。
第二个示例显示如何检查变量是否为 NOT null
。
第三个示例使用 loose equals==
而不是 strict equals===
来检查变量是否等于null
or undefined
。
这会同时检查null
和undefined
因为当使用松散等号 ( ==
) 时,null
等于undefined
。
console.log(null == undefined); // 👉️ true
上面的语句在 TypeScript 中if
用作
类型保护。
type Person = { name: string | null; }; const person: Person = { name: null, }; if (person.name !== null) { // ✅ TypeScript knows person.name is string // 👇️ (property) name: string console.log(person.name); console.log(person.name.toLowerCase()); }
类型的name
属性Person
可以是 astring
或null
。
在if
声明中,我们检查该属性是否不是null
。
string
并允许我们使用特定于字符串的方法,如. toLowerCase()
如果我们尝试toLowerCase()
直接调用该方法,而不检查属性是否为 not null
,则会出现错误。
type Person = { name: string | null; }; const person: Person = { name: null, }; // ⛔️ Error: Object is possibly 'null'.ts(2531) console.log(person.name.toLowerCase())
您还可以使用类型保护来检查属性是否为string
,这在这种情况下是更直接的方法。
type Person = { name: string | null; }; const person: Person = { name: null, }; if (typeof person.name === 'string') { // ✅ TypeScript knows person.name is string // 👇️ (property) name: string console.log(person.name); console.log(person.name.toLowerCase()); }
一种检查变量是否是null
或undefined
将要使用可选链接 (?.) 运算符的更新方法。
type Person = { name: string | null; }; const person: Person = { name: null, }; console.log(person.name?.toLowerCase());
如果引用等于or ,
可选链接 (?.)运算符会短路而不是抛出错误。null
undefined
这就是为什么 TypeScript 允许我们检查该toLowerCase()
方法是否存在于person.name
属性上,即使它可能是null
.
您还可以使用这种方法来检查对象上是否存在深度嵌套的属性。
type Person = { name?: { first?: string | null; }; }; const person: Person = {}; console.log(person?.name?.first?.toLowerCase());
如果引用等于null
or undefined
,可选的链接运算符将短路并返回undefined
,并且不会抛出任何错误。