Skip to content
Wen-Hsiu Hsu's Avatar Image
Wen-Hsiu Hsu's Avatar Image

程式碼之外,還有生活的藝術 前端工程師 / 攝影 / 生活紀錄

  • 文章298
  • 標籤372
Buy Me A Coffee

最新文章

混合 Dev 和 Life 的所有最新內容

298 篇
2026-09-0326 分鐘閱讀

示範用型別別名為字面值聯集命名,也能改用 number、string 這類更寬泛的型別表達集合;整理聯集型別在控制流程回傳值中最常見的用法,指出 tuple 解構出聯集型別後只能存取共同屬性(最大公因數)的限制,並用 instanceof 型別守衛與判別聯集窄化型別、取回完整存取權,也談型別集合基數的侷限。

2026-09-0211 分鐘閱讀

用偶數與 1 到 5 兩個數字集合畫成文氏圖,示範聯集型別(|)如何接受任一集合的值、交集型別(&)如何只接受兩者共有的值,並整理「型別願意接受什麼值」與「能對每個成員保證什麼」這兩種思考角度,說明為何聯集接受範圍變大但保證變少、交集接受範圍變小但保證反而變多,直覺上很容易把兩者搞反。

2026-09-0219 分鐘閱讀

從型別等價性的集合觀點出發,比較靜態/動態型別與結構型別/名義型別這兩組常被混淆的分類,用 Java 對比 TypeScript,說明為什麼 printCar 函式能接受 Car、Truck 甚至任意物件、額外屬性也不影響相容性,並看 instanceof 如何在結構型別系統裡模擬名義型別的檢查方式。

2026-09-0116 分鐘閱讀

說明陣列型別用 T[] 表示的慣例、為何避免用 Array 語法,示範 tuple 如何用固定位置描述像 [year, make, model] 這種有語意順序的結構,並指出 tuple 本質仍是 JavaScript 陣列、push/pop 不受限制的安全落差,readonly 如何補上這層保護。

2026-09-0115 分鐘閱讀

用電話簿物件示範索引簽名語法,說明如何讓 home、work、fax 已知欄位跟任意字串鍵在同一型別裡並存,整理點記法與方括號記法的存取慣例、noUncheckedIndexedAccess 編譯器選項如何處理鍵不存在的風險,並用 Stripe 貨幣金額為例說明字典結構相較陣列更適合的建模情境。

2026-08-3118 分鐘閱讀

用 car 物件與 printCar 函式,說明如何用大括號定義物件型別、用問號標記選擇性屬性,並示範型別守衛與窄化如何讓 number | undefined 在條件式判斷後安全變回 number,最後解釋多餘屬性檢查為何只針對物件字面量生效,以及用 spread operator 繞過檢查的實際效果。

2026-08-3114 分鐘閱讀

用 add 函式為例,說明沒有型別標註的參數為何會讓 any 型別的錯誤悄悄流過(例如誤把數字傳進只接受 callback 的 Promise 建構子),比較讓 TypeScript 自動推斷回傳型別跟顯式標註回傳型別在錯誤發生位置上的差異,並談 TypeScript 與 ESLint 的分工。

2026-08-3012 分鐘閱讀

延續上一篇的 casting 基礎,用 frontEndMastersFounding 日期實例,討論型別轉換的相容性邊界:為什麼字面值之間看似合理的轉型仍會被拒絕,如何用先轉 any 再轉目標型別的雙重轉型繞過檢查,這個逃生口適合用在什麼情境,以及為何 any 與 unknown 在這個技巧上完全等價。

2026-08-3018 分鐘閱讀

用 let、const 宣告變數會如何影響 TypeScript 推斷出一般型別或字面值型別,說明變數型別一旦建立就固定不變,並解析型別轉換(casting)將型別轉為更寬泛或更精確型別的用途與風險,以及 as const 語法、變數未初始化時為何會出現 implicit any,最後示範用型別標註修正這個問題。

2026-08-2918 分鐘閱讀

示範用 TSC 編譯 TypeScript 專案,比較 target 設為 ES2015、ES2017、ES2022 時輸出的 JS 差異,說明編譯器如何用輔助函式(awaiter、classPrivateFieldGet)回退相容舊環境,並用 declaration 產生 d.ts 檔案。

MIT Licensed | Copyright © 2025-present Wen-Hsiu's Blog
Photo by Aram on Unsplash