--- tags: jsdc2021 --- # #Session 1 在你的庭院種一棵Elm {%hackmd 2YoCBdBPTjmHXDr9lEpWuQ %} > 從這開始 > 可以直接打字做共筆囉 :point_down: Paipo Elm 範例外送服務網站 API 資料架構 <!-- 你手指不會累嗎 --> <!-- 還會打結 --> <!-- 我先休息好了 怕打到運動傷害 --> <!-- 辛苦了 --> Loading 狀態 ![](https://i.imgur.com/E54NUKq.png) Error ![](https://i.imgur.com/6GGuK54.png) ![](https://i.imgur.com/QgGIvm1.png) ![](https://i.imgur.com/27Pymz8.png) ![](https://i.imgur.com/mg419P6.png) ![](https://i.imgur.com/nhH8TxT.png) ### 總結狀態 ![](https://i.imgur.com/0bRFCOL.png) ### TypeScript 的不保證 TypeScript 不能保證 Type 需要啟用 Advanced Types 技巧 ex. Union Types 不可能的狀態為何會發生? ![](https://i.imgur.com/5gERAfF.png) <!-- 寫 TS 真的很常發生 --> <!-- 推薦 myzod 進行 type checking --> ![](https://i.imgur.com/dLUTPKT.png) <!-- T_T --> TS 的 `|` 比較像「有這幾種可能」 `&` 是真的 AND ![](https://i.imgur.com/2d30NgN.png) ### API 不尊重合約呢? 相信前端的 Declaration 但後端不見得會 Follow ### 總結遇到的問題 ![](https://i.imgur.com/RM8oJPe.png) ## Elm ### 更好的 Type ![](https://i.imgur.com/GeeroJG.png) - 簡潔 - Custom Type 不是進階,很簡單 ### 分離安全與不安全 ![](https://i.imgur.com/bm9NdLk.png) - 定義好後,Compile 遇錯會出錯 - Decoder 強迫你履行合約 ### 更精確描述 Types fetch API 為什麼不能寫滿 Type ![](https://i.imgur.com/dgzPdxf.jpg) ![](https://i.imgur.com/LaIb2zp.png) Elm 會提醒你沒有處理到的可能 ### More ... ![](https://i.imgur.com/lHs9TrJ.png) ## Concludes ![](https://i.imgur.com/OZa5doE.png) - Java 即使 Strong Type 還是有 Runtime Error -