Day 10 进阶型别 Part - 3

今天要介绍的是 Function Overloads、Optional chaining、Nullish Coalescing

Function Overloads 提供了不同种呼叫 function 的方法,在原本定义好的 function 的引数可能带有 Union 型别,意味着那些引数会有两种以上的型别,这时就能够用 function overloads 再去定义呼叫 function 时的架构以确保传进去的参数能够更让 TypeScript 辨识。
https://ithelp.ithome.com.tw/upload/images/20210925/20131989HMMyZPuWMu.png
从以上图片可以看到,虽然传入的参数是字串,但却不能呼叫字串的方法 split(),这是因为 TypeScript 没办法辨识 Combinable 这个型别到底有没有 split() 方法,要解决这个问题的话可以这麽做:
https://ithelp.ithome.com.tw/upload/images/20210925/201319892YL3oSChQu.png
使用 function overloads 定义会传进去的参数型别,就能够顺利地呼叫字串的 split() 方法了!

Optional chaining 在比如说拿到从後端来的资料时,有时无法确定是否会有资料或是是 nullundefined 等等,为了避免在 runtime 的时候造成错误,因此可以使用 optional chaining 来先行判断该属性是否有存在,写法是在物件跟属性名称後面加上问号,如果存在的话就继续往下取值,有点像 if 判断或是 && 运算子,但是可以让程序码更加简洁。

const fetchUserData = {
  id: 'u1',
  name: 'Claire',
  job: { title: 'FE developer', description: 'Make websites' }
}

console.log(fetchUserData?.job?.title)

延伸下来继续介绍 Nullish Coalescing,在特别想要处理 nullundefined 时就可以派上用场。

const userInput = ''
const storeData = userInput ?? 'Default'

写法是两个问号,这样可以在 userInputnullundefined 时才会跑到後面的 'Default',而不会像以前如果是用 || 来做判断时,''0 也会被当成 falsy 的值而跑到後面的条件式。

今天的学习笔记到这边,谢谢阅读。:)


<<:  DAY13-JavaScript实作网页小游戏

>>:  Day25 测试写起乃 - spring-command-rspec

网页选择器-30天学会HTML+CSS,制作精美网站

在写网页样式时,最重要的就是选择器的使用,写得好容易理解,修改没烦恼,也可以让网页快速呈现效果。以下...

友善的用户操作介面可降低人为操作问题发生率

改善软件操作介面 金融业提供给外部用户的 App 通常具备易用、防呆、多次确认的程序,但内部的商用软...

Day6 Vue实体的生命周期

这是在Vue官网提供的式意图: 红框白底的是各个钩子函式的名称,这些钩子代表 Vue 实体的每个阶段...

Day 10 搜寻方式

测试的小知识 搜寻方法 大家可以常常在test case里面看到多种搜寻目标元素的方式,我列出以下的...

学会网页制作除了javascript还要会....HTML1

从基本的 HTML、CSS 网页设计开始入门,先学习静态版面设计技巧,再带入动态的 JavaScri...