Closed2
Omit と Pick のようなメソッドを作成した
TypeScriptのUtility TypeのPick
やOmit
ように使えるメソッドが欲しかったので作った。
型補完もちゃんと効きます。
export class ObjectModule {
/** objから任意のkeyを選びオブジェクトを作成する。 */
public static pick<T, K extends keyof T>(obj: T, ...key: K[]): Pick<T, K> {
return this.basePick(obj, (k, v) => {
if (key.includes(k as K)) return { [k]: v };
});
};
/** objから任意のkeyを意外を選びオブジェクトを作成する。 */
public static omit<T, K extends keyof T>(obj: T, ...key: K[]): Omit<T, K> {
return this.basePick(obj, (k, v) => {
if (!key.includes(k as K)) return { [k]: v };
});
};
/**
* pick, omitで利用する共通関数
* collBackのオブジェクトを新しい一つのオブジェクトとして戻す。
*/
private static basePick<T, K extends keyof T, R>(obj: T, collBack: (k: K, v: T[K]) => {[x: string]: T[K]}): R {
return Object.assign({}, ...Object.entries(obj).map(([k, v]) => collBack(k as K, v)).filter(v => v));
}
}
lodash
使っても良かったけど、なんか負けた気がするのが嫌で作りました。
楽しかったです。
このスクラップは2021/09/07にクローズされました