這回主要著重在Typescript取得資料後進行的處理
主要介紹兩種處理:
- JSON與JSON合併
- 巢狀JSON內屬性為undefined時存取
實作一:JSON與JSON合併
有user、userDetail,將相同userId的資料做合併
json檔案
1 | // user.json |
typescript實作資料合併:
1 | interface User { |
改善更好作法:
typescript實作資料合併:
1 | interface User { |
實作二:巢狀JSON內屬性為undefined時存取
假設有以下資料,而某些物件數值為undefined,該如何避免runtime存取問題。
1 | interface Address { |
userDetail 在 User 介面裡是 可選的 (?)
所以 user2 沒有 userDetail 也符合型別
存取時使用了 optional chaining (?.)
user1addresstype → “home”
user2addresstype → undefined(因為 userDetail 不存在
避免了必填欄位缺失的型別錯誤
安全存取巢狀欄位
如果要進一步操作 user2addresstype,需要考慮可能是 undefined
在 TypeScript/JavaScript 裡,?.(optional chaining)運作的原理就是 如果左邊是 null 或 undefined,就直接回傳 undefined 而不是繼續存取,所以不會拋錯。
後面的 .address 和 .type 不會執行 → 沒有 runtime error