refactor(types): 消除非必要 as 逃逸,锁紧 strict 政策

按 Oracle 复核处置全仓 5 处类型断言:

- fields.ts: as const → satisfies Record<GeneratedFieldKey, true>
- compile.ts: as readonly string[] → ReadonlySet<string>.has()
- embed-migrations.ts: JSON.parse as Journal → Zod schema 运行时校验,JSON.parse 显式 unknown
- interceptors.ts: 唯一保留的跨包断言(ORPC→Zod)注释扩写为完整背景
- router.tsx: satisfies 非 cast,保留

biome.json 增配 noExplicitAny / noTsIgnore / noNonNullAssertion,防止后续漂移。
This commit is contained in:
2026-04-25 14:23:08 +08:00
parent f520b54ca5
commit 695e826dcf
5 changed files with 38 additions and 9 deletions
+2 -1
View File
@@ -8,7 +8,8 @@ export const logError = (error: unknown) => {
export const handleValidationError = (error: unknown) => {
if (error instanceof ORPCError && error.code === 'BAD_REQUEST' && error.cause instanceof ValidationError) {
// ORPC ValidationError.issues are Zod issues in this app.
// ORPC widens issues to the Standard Schema shape; every contract here is built from Zod/drizzle-zod,
// so the runtime objects are Zod issues. Rehydrate to reuse z.prettifyError / z.flattenError.
const zodError = new z.ZodError(error.cause.issues as z.core.$ZodIssue[])
throw new ORPCError('INPUT_VALIDATION_FAILED', {
+7 -1
View File
@@ -12,4 +12,10 @@ export const generatedFields = {
.$onUpdateFn(() => new Date()),
}
export const generatedFieldKeys = { id: true, createdAt: true, updatedAt: true } as const
type GeneratedFieldKey = keyof typeof generatedFields
export const generatedFieldKeys = {
id: true,
createdAt: true,
updatedAt: true,
} satisfies Record<GeneratedFieldKey, true>