Files
groove-web/src/lib/proto.ts
2024-11-27 01:54:32 +01:00

29 lines
553 B
TypeScript

export function serializable<F, T extends object = object>(data: T): F {
const obj = {};
for (const key in data) {
const value = data[key];
if (typeof value === 'object') {
/// @ts-ignore
if ('length' in value) {
/// @ts-ignore
obj[key] =
value.length > 0
? value.map((v) => {
return typeof v === 'object' ? serializable(v) : v;
})
: [];
} else {
/// @ts-ignore
obj[key] = serializable(value);
}
} else {
/// @ts-ignore
obj[key] = value;
}
}
return obj as unknown as F;
}