TypeScript 中如何避免和处理对象中的 undefined 和 null

在 TypeScript 中,我们常常需要处理对象中的 undefined 和 null 值。这些值可能会导致代码运行时出错,因此我们需要采取一些措施来避免和处理它们。

避免 undefined 和 null

在 TypeScript 中,我们可以使用可选属性和默认值来避免 undefined 和 null 值的出现。

可选属性

我们可以使用可选属性来在对象中声明一个属性不一定存在,从而避免 undefined 值的出现。

--------- ------ -
  ----- -------
  ----- -------
-

----- -------- ------ - -
  ----- -------
--

----- -------- ------ - -
  ----- ------
  ---- --
--

在上面的例子中,我们在 Person 接口中使用了可选属性 age,这意味着在创建 person1 对象时不需要提供 age 属性,而在创建 person2 对象时需要提供 age 属性。

默认值

我们可以使用默认值来在对象中声明一个属性默认值,从而避免 undefined 值的出现。

--------- ------ -
  ----- -------
  ---- -------
-

----- -------- ------ - -
  ----- --------
  ---- --
--

----- -------- ------ - -
  ----- ------
  ---- --------- -- ------ ----
--

----- -------- ------ - -
  ----- ----------
  ---- ---- -- ------ --- ------ --
--

----- -------- ------ - -
  ----- --------
  ---- - -- ------ ----- -
--

在上面的例子中,我们在 Person 接口中使用了默认值 age: 0,这意味着在创建 person1 对象时不需要提供 age 属性,而在创建 person2person3 对象时都会出现错误。注意,当使用默认值时,我们需要确保属性的类型和默认值的类型一致。

处理 undefined 和 null

即使我们尽力避免 undefined 和 null 值的出现,有时它们还是会出现在我们的代码中。在这种情况下,我们需要采取一些措施来处理它们。

非空断言运算符

非空断言运算符 ! 可以将一个可能为 null 或 undefined 的值转换为非 null 或 undefined 的值。

-------- ------------ ------- -
  ------------------- --------------------------
-

-------- -- ------- --- ---------
--------------- -- ------- -- ---------

在上面的例子中,我们使用了非空断言运算符 ! 将可能为 undefined 的 name 参数转换为非 undefined 的值。注意,使用非空断言运算符可能会导致运行时错误,因此我们需要谨慎使用。

可选链运算符

可选链运算符 ?. 可以在访问一个可能为 null 或 undefined 的值时避免出现运行时错误。

--------- ------ -
  ----- -------
  ----- -------
-

-------- --------------- ------- -
  ------ ------------
-

---------------------- -- ---------
-------------------- ----- ------- ---- -- ---------
-------------------- ----- ------ ---- -- ---- -- --

在上面的例子中,我们使用了可选链运算符 ?. 来访问可能为 undefined 的 person 对象的 age 属性。如果 person 对象为 undefined,则 getAge 函数返回 undefined;否则,返回 person.age 属性的值。

总结

避免和处理 undefined 和 null 值是 TypeScript 中的重要问题。我们可以使用可选属性和默认值来避免它们的出现,使用非空断言运算符和可选链运算符来处理它们的出现。通过这些措施,我们可以编写更加安全和健壮的代码。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65fbae6fd10417a2227419be