どなたかこの再帰処理がうまくいっていないの直してもらえませんか?
ChatGPT に聞いてもうまくいかないです。
https://github.com/Neos21/pseudo/blob/master/backend/src/shared/helpers/convert-case.ts#L13
片方だけだけどこんな感じ?
テストケースをtoStrictEqualにしたら通りました
/** snake_case → camelCase オブジェクト */
export const snakeToCamelCaseObject = <T extends object>(object: T): SnakeToCamelCaseObject<T> => {
if (isObject(object)) {
return Object.entries(object).reduce((accumulator, [snakeKey, value]) => {
if (isObject(value) && Array.isArray(value)) {
accumulator[snakeToCamelCase(snakeKey)] = value.map(item => snakeToCamelCaseObject(item)) as SnakeToCamelCaseObject<T>;
return accumulator;
} else if (isObject(value)) {
accumulator[snakeToCamelCase(snakeKey)] = snakeToCamelCaseObject(value);
return accumulator;
} else {
accumulator[snakeToCamelCase(snakeKey)] = value;
return accumulator;
}
}, {}) as SnakeToCamelCaseObject<T>;
}
else if (Array.isArray(object)) {
return object.map(item => snakeToCamelCaseObject(item)) as SnakeToCamelCaseObject<T>;
}
return object as SnakeToCamelCaseObject<T>;
};
@tsukimikaze ありがとうございます!!!!!!動きました!!!!!!!!!!!!!!!
大感謝…!!!
@Neos21@fedibird.com (それはそれとしてsnakecaseで通信する利点が見えないので全部Camelでやってしまっていいとおもう)
@tsukimikaze やっぱり…?
なんか Web サーバによっては大文字小文字を区別しないで処理する実装が存在するらしい、というのは調べたことあって、
10年近く前ですが Java と VB とかをまたぐ時につっかえてたことも記憶にあり、
どちらも JS 製の環境ですが、スネークにしておいて気を付けた方が良いのかな…とか思ったりしてました
気にしすぎ?
@Neos21@fedibird.com 直感的には気にしすぎなだとおもうけれどnestjsはナニモワカラナイ
再帰処理がうまくいってないヤツ、期待するテストケースを書いています。
こんな風にできるように直したいです。宜しくお願いします。
https://github.com/Neos21/pseudo/blob/master/backend/src/shared/helpers/convert-case.spec.ts#L39-L41
https://github.com/Neos21/pseudo/blob/master/backend/src/shared/helpers/convert-case.ts#L10-L21
#fedibird