如何在 TypeScript 中检查 Null

在 TypeScript 中检查 Null

How to check for Null in TypeScript

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

索引.ts
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===来检查变量是否等于nullor undefined

这会同时检查nullundefined因为当使用松散等号 ( ==) 时,null等于undefined

索引.ts
console.log(null == undefined); // 👉️ true

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

索引.ts
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可以是 astringnull

if声明中,我们检查该属性是否不是null

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

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

索引.ts
type Person = { name: string | null; }; const person: Person = { name: null, }; // ⛔️ Error: Object is possibly 'null'.ts(2531) console.log(person.name.toLowerCase())

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

索引.ts
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()); }

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

索引.ts
type Person = { name: string | null; }; const person: Person = { name: null, }; console.log(person.name?.toLowerCase());


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

这就是为什么 TypeScript 允许我们检查该toLowerCase()方法是否存在于person.name属性上,即使它可能是null.

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

索引.ts
type Person = { name?: { first?: string | null; }; }; const person: Person = {}; console.log(person?.name?.first?.toLowerCase());

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

发表评论