📝
オブジェクトの型から任意の文字で始まるプロパティを取り除く
結論
こんな感じのを作る。
type OmitByPrefix<T extends Record<string, unknown>, Prefix extends string> = {
[P in keyof T as P extends `${Prefix}${string}` ? never : P]: T[P];
};
例
こんな型があるとします(とある OSS の型をお借りして一部を削ったものです)。
interface Options {
altFormat: string;
altInput: boolean;
altInputClass: string;
nextArrow: string;
now: Date;
onChange: Hook[];
onClose: Hook[];
onDestroy: Hook[];
onKeyDown: Hook[];
onOpen: Hook[];
onReady: Hook[];
onValueUpdate: Hook[];
static: boolean;
weekNumbers: boolean;
wrap: boolean;
}
↑ の型からイベント( onXXX
)を取り除きたい場合は、↓ のようにします。
type MyOptions = OmitByPrefix<Options, "on">
Discussion