Как не разрешить неизвестные свойства после метода преобразования zod (TypeScript)

У меня есть функция API, которая, например, возвращает пользователя. Я хочу разобрать ответ сервера моему клиенту Userтип. Скажем, например, я хочу объединить имя и фамилию пользователя в одну строку для использования в моем клиентском коде.

      
type User = {
    uuid: string
    email: string
    fullName: string
}

const UserSchema: z.ZodSchema<User, z.ZodTypeDef, unknown> = z.object({
    uuid: z.string().uuid(),
    email: z.string().email(),
    firstName: z.string(),
    lastName: z.string()
}).transform(response => ({
    uuid: response.uuid,
    email: response.email,
    fullName: `${response.firstName} ${response.lastName}`
}))

и это прекрасно работает с точки зрения TypeScript. Например, если я попытаюсь установить нестроковое значение в fullNameвнутри transformон показывает ошибку. НО это позволяет мне добавлять свойства к конечному результату без каких-либо ошибок:

      ...}).transform(response => ({
    uuid: response.uuid,
    email: response.email,
    fullName: `${response.firstName} ${response.lastName}`,
    
    // here is an extra value that should not be here because it
    // doesn't exist in my client User type but TS allows it here
    blablabla: true,
}))

у меня есть strict и strictNullChecksвключен в моем файле tsconfig. Как я могу сделать ошибку видимой в таких случаях?

0 ответов

Другие вопросы по тегам