29 lines
553 B
TypeScript
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;
|
|
}
|