TypeScript 4.1 扩展了 TypeScript 3.7 的支持:带问号的链操作符和 nullish 合并

阅读时长 4 分钟读完

TypeScript 4.1 是 TypeScript 的一个新版本,它扩展了 TypeScript 3.7 的支持,增加了两个新的特性:带问号的链操作符和 nullish 合并。这两个特性都是为了更好地处理可选值和空值而设计的。

带问号的链操作符

带问号的链操作符是 TypeScript 3.7 中引入的一个新特性。它可以让你更方便地访问对象的属性和方法,而不用担心对象不存在或者属性不存在的情况。

在 TypeScript 4.1 中,带问号的链操作符得到了扩展。现在,你可以在链操作符中使用函数调用,而不仅仅是属性访问。这个新特性可以让你更方便地处理函数返回的可选值。

下面是一个示例代码:

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

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

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

在这个示例代码中,我们定义了一个 Person 接口,它有三个可选属性:nameagesayHello。我们定义了一个 printPerson 函数,它接受一个可选的 Person 对象作为参数,并打印出 name 的大写形式、age 的值和调用 sayHello 方法。

printPerson 函数中,我们使用了带问号的链操作符来访问 person 对象的属性和方法。如果 person 对象不存在,或者 namesayHello 属性不存在,链操作符会返回 undefined。如果 age 属性不存在,我们使用了 nullish 合并操作符 ?? 来返回默认值 0

nullish 合并

nullish 合并是 TypeScript 4.0 中引入的一个新特性。它可以让你更方便地处理空值或者 undefined 值。

在 TypeScript 4.1 中,nullish 合并得到了扩展。现在,你可以在 nullish 合并中使用函数调用,而不仅仅是属性访问。这个新特性可以让你更方便地处理函数返回的空值或者 undefined 值。

下面是一个示例代码:

在这个示例代码中,我们定义了一个 getPersonName 函数,它接受一个可选的 person 对象作为参数,并返回 person.name 的值,如果 person 对象不存在或者 name 属性不存在,返回默认值 'Unknown'

getPersonName 函数中,我们使用了带问号的链操作符来访问 person 对象的 name 属性。如果 person 对象不存在,或者 name 属性不存在,链操作符会返回 undefined。如果返回值是 undefined,我们使用了 nullish 合并操作符 ?? 来返回默认值 'Unknown'

总结

TypeScript 4.1 扩展了 TypeScript 3.7 的支持,增加了带问号的链操作符和 nullish 合并。这两个特性都是为了更好地处理可选值和空值而设计的。带问号的链操作符可以让你更方便地访问对象的属性和方法,而不用担心对象不存在或者属性不存在的情况。nullish 合并可以让你更方便地处理空值或者 undefined 值。这两个特性都可以让你更方便地编写类型安全的代码。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/668862b0dc1ed1a61ba72aa9

纠错
反馈