トーク

LT
Panda-CSS はどのように型安全にしているのか
DAY2 / 16:10 〜 16:50 (トグルルーム)
Panda-CSS は型が効く Tailwind という印象を持たれていることが多いように思います。実際、Tailwind と同じような記法で型安全に実装することができるわけですが、どのような方式で型安全にしているのか、というテーマで簡単にお話ししようと思っています。
お話しする内容の詳細について記載します。Panda-CSS では、定義ファイル(panda.config.ts)に対してカラーバリエーション等の定義をします。この定義ファイルが元となり、型定義ファイル(.d.ts)が出力されています。出力された型定義ファイル(.d.ts)は、ユーティリティ関数の引数等の型定義に使用されており、開発ではユーティリティ関数を使用するため、型安全に実装することができます。Panda-CSS 以外にも型安全にCSSを実装できるライブラリとして stitches などがありますが、Panda-CSS は事前に定義ファイルから型定義を出力する部分が他のライブラリの異なる点であり、これによって型推論にかかるコストを抑えることができています。ただ、この方式にもデメリットはあり、事前に型定義を出力する、という開発のための事前準備が必要になっています。型を効かせて実装を進めるために、どのタイミングで型に関するコストを支払うか...という問題に帰着します。
また、型定義ファイル(*.d.ts)の出力の仕組みについても、シンプルな実装で実現されているため、Panda-CSS のライブラリの実装を見つつ簡単にお話しします。
(参考:Panda-CSS の型定義の出力の実装)