我成為工程師的時間剛好是 ChatGPT 剛問世的時候。當時它還不怎麼好用。但到了現在,伴隨著各種 AI 工具的問世。在激烈的市場競爭下,AI 的能力也隨之大幅提升,甚至已經成為我每天 coding 不可缺少的夥伴。但隨之我也發現一個很大的問題。作為一個 code reviewer,我發現很多工程師的程式碼品質沒有因為 AI 的幫助而提高。甚至讓我覺得 AI 在扼殺他們的成長。所以我想找一個方法可以有效的做出產品級的軟體。因此選擇了學習 Effect 這個 TypeScript 套件,作為這 30 天挑戰的主題。
我們前幾個章節講了這麼多 Effect 的語法與知識,但都沒有做啥實際有用的玩意兒。這次不同以往,我們實際來建立一個具有業務場景的 pipeline。讓讀者對...
前言 在上一篇,我們一起做了一個 pipeline,把一連串應收金額的產出步驟用 pipe 串起來。pipe 雖然很適合銜接簡單流程,但當需求變得複雜、需要插入...
這篇我想要來講解為什麼在 Effect 的錯誤模型中,我們偏好用 class 來定義錯誤。如果不用那會遇到什麼樣的限制與麻煩。 為什麼會有這個疑問? 在 Typ...
Effect 把錯誤當作一等公民。本文以實作為主,逐步帶你掌握「期望錯誤 vs. 非期望錯誤」、短路語義、常用錯誤處理 combinators,以及在 Effe...
在前面的文章中,我們已經學會了 Effect 的基本錯誤處理 combinators,像是 catchAll、catchTag、orElse 等。這些工具讓我們...
在前一篇文章中,我們學習了 Effect 重試機制的概念與實作。然而,重試機制並非萬能,當所有重試都失敗時,我們需要一個降級策略來確保系統的可用性。這篇文章將深...
這一篇帶你用最直覺的方式,理解 Timing Out 相關的 Effect API。每個段落先用白話說明,再附上可直接跑的程式碼範例;所有console.log...
Effect.disconnect:讓 uninterruptible Effect 逾時時先回應、後收尾 在 Effect 中,Effect.disconne...
本篇要來講一個新的概念錯誤累積(Error Accumulation),它指的是:一次性的執行就把「所有錯誤」都收集回來,而不是遇到第一個錯誤就停止(Fail‑...
想像你在應用程式裡到處傳 databaseService、loggingService,很快地每個函式都在接收、轉傳一堆 Service,變得又厚又難測。Eff...