From b5156586ebd71d843295da130df9b849b8307088 Mon Sep 17 00:00:00 2001 From: ssi02014 Date: Wed, 24 Sep 2025 14:23:27 +0900 Subject: [PATCH 1/2] refac(errors): Unify code structure and improve types --- packages/zod/src/v4/core/errors.ts | 22 ++++++---------------- 1 file changed, 6 insertions(+), 16 deletions(-) diff --git a/packages/zod/src/v4/core/errors.ts b/packages/zod/src/v4/core/errors.ts index 4d8465606f..31eb3b6df4 100644 --- a/packages/zod/src/v4/core/errors.ts +++ b/packages/zod/src/v4/core/errors.ts @@ -226,9 +226,9 @@ type _FlattenedError = { export function flattenError(error: $ZodError): _FlattenedError; export function flattenError(error: $ZodError, mapper?: (issue: $ZodIssue) => U): _FlattenedError; -export function flattenError(error: $ZodError, mapper = (issue: $ZodIssue) => issue.message): any { - const fieldErrors: any = {}; - const formErrors: any[] = []; +export function flattenError(error: $ZodError, mapper = (issue: $ZodIssue) => issue.message as U) { + const fieldErrors: Record = {}; + const formErrors: U[] = []; for (const sub of error.issues) { if (sub.path.length > 0) { fieldErrors[sub.path[0]!] = fieldErrors[sub.path[0]!] || []; @@ -254,12 +254,7 @@ export type $ZodFormattedError = { export function formatError(error: $ZodError): $ZodFormattedError; export function formatError(error: $ZodError, mapper?: (issue: $ZodIssue) => U): $ZodFormattedError; -export function formatError(error: $ZodError, _mapper?: any) { - const mapper: (issue: $ZodIssue) => any = - _mapper || - function (issue: $ZodIssue) { - return issue.message; - }; +export function formatError(error: $ZodError, mapper = (issue: $ZodIssue) => issue.message as U) { const fieldErrors: $ZodFormattedError = { _errors: [] } as any; const processError = (error: { issues: $ZodIssue[] }) => { for (const issue of error.issues) { @@ -307,12 +302,7 @@ export type $ZodErrorTree = T extends util.Primitive export function treeifyError(error: $ZodError): $ZodErrorTree; export function treeifyError(error: $ZodError, mapper?: (issue: $ZodIssue) => U): $ZodErrorTree; -export function treeifyError(error: $ZodError, _mapper?: any) { - const mapper: (issue: $ZodIssue) => any = - _mapper || - function (issue: $ZodIssue) { - return issue.message; - }; +export function treeifyError(error: $ZodError, mapper = (issue: $ZodIssue) => issue.message as U) { const result: $ZodErrorTree = { errors: [] } as any; const processError = (error: { issues: $ZodIssue[] }, path: PropertyKey[] = []) => { for (const issue of error.issues) { @@ -326,7 +316,7 @@ export function treeifyError(error: $ZodError, _mapper?: any) { } else { const fullpath = [...path, ...issue.path]; if (fullpath.length === 0) { - result.errors.push(mapper(issue)); + result.errors.push(mapper(issue) as string); continue; } From d9d3cf7bb5b1c3f537791dbd575751795473a80b Mon Sep 17 00:00:00 2001 From: ssi02014 Date: Wed, 24 Sep 2025 14:32:41 +0900 Subject: [PATCH 2/2] refac: fixed type --- packages/zod/src/v4/core/errors.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/zod/src/v4/core/errors.ts b/packages/zod/src/v4/core/errors.ts index 31eb3b6df4..29c247b516 100644 --- a/packages/zod/src/v4/core/errors.ts +++ b/packages/zod/src/v4/core/errors.ts @@ -254,7 +254,7 @@ export type $ZodFormattedError = { export function formatError(error: $ZodError): $ZodFormattedError; export function formatError(error: $ZodError, mapper?: (issue: $ZodIssue) => U): $ZodFormattedError; -export function formatError(error: $ZodError, mapper = (issue: $ZodIssue) => issue.message as U) { +export function formatError(error: $ZodError, mapper = (issue: $ZodIssue) => issue.message as U) { const fieldErrors: $ZodFormattedError = { _errors: [] } as any; const processError = (error: { issues: $ZodIssue[] }) => { for (const issue of error.issues) { @@ -303,7 +303,7 @@ export type $ZodErrorTree = T extends util.Primitive export function treeifyError(error: $ZodError): $ZodErrorTree; export function treeifyError(error: $ZodError, mapper?: (issue: $ZodIssue) => U): $ZodErrorTree; export function treeifyError(error: $ZodError, mapper = (issue: $ZodIssue) => issue.message as U) { - const result: $ZodErrorTree = { errors: [] } as any; + const result: $ZodErrorTree = { errors: [] } as any; const processError = (error: { issues: $ZodIssue[] }, path: PropertyKey[] = []) => { for (const issue of error.issues) { if (issue.code === "invalid_union" && issue.errors.length) { @@ -316,7 +316,7 @@ export function treeifyError(error: $ZodError, mapper = (issue: $ZodIss } else { const fullpath = [...path, ...issue.path]; if (fullpath.length === 0) { - result.errors.push(mapper(issue) as string); + result.errors.push(mapper(issue)); continue; }