interface FieldErrorObject { message?: string; [key: string]: any; } interface NestedFieldErrors { [key: string]: FieldErrorObject | FieldErrorObject[] | NestedFieldErrors | undefined; } export const flattenFieldErrors = (obj: NestedFieldErrors, parentKey = '', results: string[] = []): string[] => { for (const key in obj) { if (obj.hasOwnProperty(key)) { const newKey = parentKey ? `${parentKey}.${key}` : key; const value = obj[key]; if (value instanceof Array) { value.forEach((item, index) => { flattenFieldErrors(item, `${newKey}[${index}]`, results); }); } else if (value && typeof value === 'object') { if (value.message) { results.push(value.message as string); } else { flattenFieldErrors(value, newKey, results); } } } } return results; };