技術とかの雑なToday I Learnedメモ

type-festとutility-types

type-fest と utility-types

Vue.js 状態管理の選択肢 - その Vuex 本当に必要ですか - / Vue.js State Management Options - Speaker Deck

この記事を読んでいたのだけど、記事内でutility-typesというライブラリが出てきた。

↓50 ページ

Vue.js 状態管理の選択肢 - その Vuex 本当に必要ですか - / Vue.js State Management Options - Speaker Deck

ここでDeepReadonlyという型が出てきている。

なんか type-fest のReadonlyDeep<T>と似てるな……と思って調べたら、type-fest と似たような便利な型の提供のライブラリっぽかった。

piotrwitek/utility-types: Collection of utility types, complementing TypeScript built-in mapped types and aliases (think "lodash" for static types).

で、結局 type-fest と utility-types ってどっちがいいんですかね……?

とりあえず npm trends で比較。

type-fest vs utility-types | npm trends

なんか圧倒的に type-fest のほうが多いけど、色々なライブラリが devDependencies に使っててそれの影響かな。

sindresorhus/type-fest: A collection of essential TypeScript types

piotrwitek/utility-types: Collection of utility types, complementing TypeScript built-in mapped types and aliases (think "lodash" for static types).

README を雑に読んでみたけど、似ている(というか同じ)型も色々あるし、ほぼ一緒……?

強いて言うなら utility-types は Flow の移植みたいなやつがある。僕は Flow 使わないので要らないなあという気持ち。

正確な CamelCase の Template Literal Type 定義を目指した

ググってたら ↑ の記事を見つけた。シンプルに勉強になるという話は置いといて、どうやら type-fest のCamelCase<T>は挙動がおかしいらしい。

うーん。どうしよう。