Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Post Zod - Valibotの紹介

kazizi
October 27, 2023

Post Zod - Valibotの紹介

【GENDA x ゼスト x バイセル】フロントエンド勉強会
https://buysell-technologies.connpass.com/event/274923/

kazizi

October 27, 2023
Tweet

Other Decks in Programming

Transcript

  1. Post Zod - Valibotの紹介 BuySell Dev Study #4【GENDA x ゼスト

    x バイセル】フロントエンド勉強会 2023.10.25
  2. Zodとは • class basedのJavaScriptバリデーションライブラリ • GitHub Star: 26K (2023/10/18現在) •

    parse, don’t validateの考えに基づいている 参照: https://lexi-lambda.github.io/blog/2019/11/05/parse-don-t-validate/ 08
  3. Zodは既存のバリデーションライブラリと比べても多機能 joi Yup io-ts Zod schemaから 型が生成できる ❌ ◯ ◯

    ◯ union, intersection型に 対応 ❌ ❌ ◯ ◯ promiseの schemaがある ❌ ❌ ❌ ◯ functionの schemaがある ❌ ❌ ❌ ◯ 参照: https://zod.dev/?id=comparison 11
  4. tree shakingとは • bundle時に使われていないコードを削ぎ落とす • functionでのみtree shakingできる • import /

    exportだけの依存関係に終始しないclassはtree shakingできない 参照: https://webpack.js.org/guides/tree-shaking/ 16
  5. Valibotとは • function basedのJavaScriptバリデーションライブラリ • GitHub Star: 3.8K (2023/10/18現在) •

    Zodでできることはほぼできる • function basedなのでtree shakingできる • 個人的に最近issueを立てたりPR送ったりしてコミットしてます 参照: https://github.com/fabian-hiller/valibot https://valibot.dev/thesis.pdf 22
  6. • instance / class methodsがどこで参照されているかを静的解析で特定す るのが難しいから ◦ instanceはmutableなobjectなのでいくらでも変更できてしまう ◦ 色んな呼び方ができてしまう

    ◦ 呼ばれなくてもmethodのkeyだけ参照される場合もある なぜclass basedだとtree shakingできないか? 参照: https://github.com/rollup/rollup/issues/349#issuecomment-348406169 40
  7. instanceはmutableなobjectなのでいくらでも変更できて しまう • 別のinstance methodで上書きする ◦ const a = new

    Foo() ◦ const b = new Bar() ◦ a.foo = b.bar • 全く別のinstanceに作り替える ◦ a.foo = b.bar ◦ a.baz = c.qux ◦ a.quux = d.corge • etc… 41
  8. • Google Closure CompilerのADVANCED_OPTIMIZATIONSオプショ ンを使えばtree shakingできるが、かなり制限が多い ◦ 全てグローバル変数になるので名前空間問わず命名被りが許されな い ◦

    文字列でobject propertyを参照できない ▪ x['key']とかは使えない ◦ etc… ちなみにclass basedでもtree shakingできるcompilerは ある 参照: Understanding the Restrictions Imposed by the Closure Compiler 44