幾週前,我發布了一個名為@traversable/valibot的 TypeScript 函式庫。
這篇文章介紹了圖書館的功能,並重點介紹了它的一些獨特功能。
封面照片來源:
《鐵臂阿童木原理圖》(鐵臂阿童木) ,手塚治虫製作公司
筆記:
目前@traversable/valibot僅適用於最新版本的 Valibot(v1.1)。
@traversable/valibot可以透過兩種方式使用:
從 15 多種現成的變壓器中挑選一款
手工捲製您自己的客製化變壓器
vx.check
將 Valibot 模式轉變為超高性能的類型保護
📖性能概況
vx.deepClone
將 Valibot 模式轉換為「深度複製」函數
vx.deepEqual
將 Valibot 模式轉換為“深度相等”函數
vx.toString
將 Valibot 模式轉換為字串
適用於測試、程式碼產生、健全性檢查
vx.toType
將 Valibot 模式轉換為 TypeScript 類型
🏷️ 將架構元資料保留為 JSDoc 註釋
vx.defaultValue
✨新增! ✨從架構中取得可配置的預設值
專為前端模式驅動的表單設計
vx.makeLens
✨即將推出! ✨🔍 使用鏡頭(getters/setters)聚焦巢值
🌈 使用棱鏡(模式匹配器)具體化控制流
⛰️ 使用遍歷(for 循環)對容器進行映射
🧱 使用函陣列合將它們堆疊在一起
vx.fold
@traversable/valibot運送的所有現成變壓器均由vx.fold供電。
在底層,該程式庫使用一種稱為遞歸方案的抽象,使實作遞歸變得簡單而有趣。
為了演示,我用它來實作一個模擬資料產生器。
該實現非常小(25 行!),因此我將其完整地嵌入到這裡:
{% stackblitz https://stackblitz.com/edit/traversable-valibot-demo?embed=1&file=src%2FvalibotToFaker.ts&hideExplorer=1&terminalHeight=0&theme=light&initialpath= vitest /&view=editor %}
筆記:
>
為了簡單起見,這只是部分實作。
>
要獲得更強大的版本,請參閱此 StackBlitz 。
-
@traversable/valibot-test是專為在 Valibot 上建置的庫作者所建置的測試庫。
在底層,它使用名為fast-check的 TypeScript 函式庫來產生隨機 Valibot 模式。
事實證明,能夠產生隨機模式對於模糊測試來說非常有用。
例如,這裡我們用它來測試我們的valibotToFaker
函數是否總是產生有效資料:
{% stackblitz https://stackblitz.com/edit/traversable-valibot-demo?embed=1&file=test%2FvalibotToFaker.test.ts&hideExplorer=1&theme=light&initialpath= vitest /&view=editor %}
💡提示:
>
在終端面板中向上滾動以查看生成的模式+模擬資料!
更新:截至昨天, @traversable/valibot已成為 Valibot 生態系統的一部分!
{% 嵌入 https://github.com/fabian-hiller/valibot/pull/1298 %}
{% 嵌入 https://github.com/fabian-hiller/valibot/pull/1298#issuecomment-3287355435 %}
Valibot 生態系統是迄今為止最受歡迎和最具協作精神的TypeScript 模式社區,因此我非常自豪能夠回饋它☺️。
感謝閱讀!
如果您有任何回饋、功能請求或疑問,請隨時提出問題或開始討論。
GitHub 上的@traversable/valibot
StackBlitz 上的valibotToFaker演示
StackBlitz 上功能齊全的valibotToFaker演示
原文出處:https://dev.to/ahrjarrett/introducing-traversablevalibot-j3d