TypeScript 竟然讓我把 user ID 傳進需要 order ID 的地方
Type aliases 不會在 TypeScript 中建立不同的型別。Branded types 會,而且它們能在編譯時期就防止你搞混識別碼。
上個季度,我們釋出了一個 bug,把款項退錯了客戶。一個 函式在預期收到 order ID 的地方收到了 user ID。字串看起來一模一樣,測試也通過了,TypeScript 完全沒有提出異議。 這兩個識別碼的型別都是 。TypeScript 看不出它們之間的差別。如果你曾經把 傳進一個需要…