iT邦幫忙

0

凡走過必留下痕跡 TypeScript 系列 第三回 : Narrowing 概念

  • 分享至 

  • xImage
  •  

哈摟~大家好我是阿華,今天來跟大家分享TypeScript 的 Narrowing 概念,

Narrowing
當你使用 TypeScript 時,Narrowing概念就像是一種類型的精準篩選,幫助你更準確地了解一個變數的類型。這有點像篩麵粉一樣,把雜質去掉,只保留你需要的部分。

例如,如果你有一個變量,不確定它是字串還是數字,你可以使用特殊的篩選方法來確定它的類型。一旦篩選完成,你就知道了這個變數的類型,然後可以放心地使用它。這種篩選通常使用條件檢查、類型斷言或其他技巧來實現。

總結來說,Narrowing 就像是對變數進行精準的篩選,讓你更了解它們的類型,以確保程式碼的正確性。

下面我們考慮一個 padLeft 函數,padding 可能是 number 或 string,
我們透過 if 判斷 typeof padding === "number"時,讓 TypeScript 可以推斷此時 padding 的類型是 number,
讓我們可以安全地把 padding 變數當作 number 使用

function padLeft(padding: number | string, input: string) {
  if (typeof padding === "number") {
    return " ".repeat(padding) + input;
  }
  return padding + input;
}

type guards
上面例子中我們看到的 typeof 關鍵字 在這裡當作 type guards 來使用,type guards 就像是一種工具或方法,可以幫助我們確定變數的類型。

正如我們所知道的,JavaScript 支援 typeof 運算符,它可以提供有關運行時值類型的非常基本的資訊。
它會回傳:

"string"
"number"
"bigint"
"boolean"
"symbol"
"undefined"
"object"
"function"

而對我們來說,我們現在知道可以透過這種方法來篩選變數的類型,讓我們放心地使用它。

這回就到這裡,下回我們來聊泛類型 Generics~


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言