在 TypeScript 中,我们常常需要处理对象中的 undefined 和 null 值。这些值可能会导致代码运行时出错,因此我们需要采取一些措施来避免和处理它们。
避免 undefined 和 null
在 TypeScript 中,我们可以使用可选属性和默认值来避免 undefined 和 null 值的出现。
可选属性
我们可以使用可选属性来在对象中声明一个属性不一定存在,从而避免 undefined 值的出现。
--------- ------ - ----- ------- ----- ------- - ----- -------- ------ - - ----- ------- -- ----- -------- ------ - - ----- ------ ---- -- --
在上面的例子中,我们在 Person
接口中使用了可选属性 age
,这意味着在创建 person1
对象时不需要提供 age
属性,而在创建 person2
对象时需要提供 age
属性。
默认值
我们可以使用默认值来在对象中声明一个属性默认值,从而避免 undefined 值的出现。
--------- ------ - ----- ------- ---- ------- - ----- -------- ------ - - ----- -------- ---- -- -- ----- -------- ------ - - ----- ------ ---- --------- -- ------ ---- -- ----- -------- ------ - - ----- ---------- ---- ---- -- ------ --- ------ -- -- ----- -------- ------ - - ----- -------- ---- - -- ------ ----- - --
在上面的例子中,我们在 Person
接口中使用了默认值 age: 0
,这意味着在创建 person1
对象时不需要提供 age
属性,而在创建 person2
和 person3
对象时都会出现错误。注意,当使用默认值时,我们需要确保属性的类型和默认值的类型一致。
处理 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