2024/10/18 追記
npmパッケージとして公開しました。
npm install @akimeaki/null-to-undefined
で使えます。
実はこのブログ、microCMSとやらで記事書いてます。
microCMSなんですが、返ってくる値が無い時にundefined
だったりnull
だったりします。
null
とundefined
の判定がちょっとめんどくさかったので、null
を全部undefined
にしちゃえばいいやと思って処理を作ってみました。
// nullを全てundefinedに変換
export const nullToUndefined = <T>(object: T): T => {
for (const value in object) {
// nullの場合はundefinedにする
if (object[value] === null) {
object[value] = undefined as Extract<keyof T, undefined>;
continue;
}
// 配列の場合はfor文で再起的に回す
if (Array.isArray(object[value])) {
const array = object[value] as Extract<keyof T, unknown[]>;
for (let i = 0; i < array.length; i++) {
array[i] = nullToUndefined(array[i]);
}
continue;
}
// オブジェクトの場合も再起的に実行
if (typeof object[value] === "object") {
object[value] = nullToUndefined(object[value]);
continue;
}
}
return object;
};
値がnull
であればundefined
を返す。
値が配列の場合は再帰的に回す。
オブジェクト場合はまるごともう1回処理に渡す。
という感じの処理でやっています。
間違ってたら教えてください。