Skip to content

es-toolkit/types

es-toolkit/types は、TypeScript が標準では提供しないコンパイル時の型ユーティリティをまとめたモジュールです。ランタイムコードを一切含まない宣言専用(declaration-only)モジュールなので、値ではなく型だけをインポートして使います。

typescript
import type { DeepPartial, ValueOf } from 'es-toolkit/types';

含まれるもの

TypeScript に用意されていないために毎回自分で書いていた型だけを厳選して収録しました。

説明
ValueOf<T>オブジェクトの値の型のユニオンを作ります。keyof の値版です。
Simplify<T>交差型やマップ型を 1 つの読みやすいオブジェクト型に平坦化します。
Writable<T>すべてのプロパティから readonly を外します。組み込みの Readonly の逆です。
NonEmptyArray<T>少なくとも 1 つ以上の要素を持つ配列です。
DeepPartial<T>ネストしたオブジェクトの内側まで再帰的にすべて省略可能にします。
DeepReadonly<T>ネストしたオブジェクトの内側まで再帰的にすべて readonly にします。
IsEqual<A, B>2 つの型が完全に同じかどうかを判定します。
PrimitiveJavaScript のすべてのプリミティブ値をまとめたユニオンです。
JSONValueJSON.parse が生成しうるすべての値です。
UnknownRecordキーも値も分からないオブジェクトです。{} の代わりに使います。
EmptyObjectプロパティを 1 つも持たないオブジェクトです。isEmptyObject と対になります。
SetOptional<T, K>指定したキーだけを省略可能にします。組み込みの Partial をキー単位にしたものです。
SetRequired<T, K>指定したキーだけを必須にします。組み込みの Required をキー単位にしたものです。
ToCamelCaseKeys<T>すべてのキーを再帰的にキャメルケースに変換します。toCamelCaseKeys の戻り値の型です。
ToSnakeCaseKeys<T>すべてのキーを再帰的にスネークケースに変換します。toSnakeCaseKeys の戻り値の型です。
ToPascalCaseKeys<T>すべてのキーを再帰的にパスカルケースに変換します。toPascalCaseKeys の戻り値の型です。
ToKebabCaseKeys<T>すべてのキーを再帰的にケバブケースに変換します。toKebabCaseKeys の戻り値の型です。
ToConstantCaseKeys<T>すべてのキーを再帰的に定数ケースに変換します。toConstantCaseKeys の戻り値の型です。
Merge<T, S>あるオブジェクト型に別のオブジェクト型を深くマージした結果です。merge の戻り値の型です。
ObjectKeys<T>Object.keys が返す形でキーのユニオンを作ります。ValueOf のキー版です。

選定基準

TypeScript がすでに提供しているものは追加していません。近いものが標準にあればそれを使うほうがよく(PartialOmitNonNullable など)、本当に欠けているものだけを補いました。補う場合も、標準の型と揃うように設計しています。たとえば ValueOfkeyof と対になるようにしています。

コントリビュート

必要な型がここにない場合は、いつでも Issue を立てるか、直接コントリビュートしてください。コントリビュートの際は、その型がどんな場面で必要かどれくらいよく使うパターンかを一緒に書いていただけると、上記の選定基準を判断するうえで大きな助けになります。

MIT ライセンスの下で配布されています。