Как заставить Zod вести себя как интерфейс и класс, вынужденные реализовать указанный интерфейсJavascript

Форум по Javascript
Ответить
Anonymous
 Как заставить Zod вести себя как интерфейс и класс, вынужденные реализовать указанный интерфейс

Сообщение Anonymous »

Я пытаюсь достичь следующего поведения. < /p>

Код: Выделить всё

export const NotificationDataSchema = z.object({
type: z.string(),
data: z.object({}),
});

export const LikesMilestoneSchema = NotificationDataSchema.extend({
type: z.literal('LikesMilestone'),
data: z.object({
count: z.number(),
});
});

export const NewFollowerSchema = NotificationDataSchema.extend({
type: z.literal('NewFollower'),
// data: z.object({
//     age: z.number(),
// })
});
И я хочу, чтобы newfollowerschema > показать ошибку, потому что он не определяет данные аналогично тому, как взаимодействуют интерфейс и классы, это возможно?export const NotificationData = z.union([
LikesMilestoneSchema,
NewFollowerSchema,
]);

export const NotificationSchema = z.object({
id: z.string(),
isRead: z.boolean(),
date: z.date(),
data: NotificationData
});
< /code>
Так что я мог бы отправить его в качестве объединенного списка на фронт, где он будет проанализирован.>

Подробнее здесь: https://stackoverflow.com/questions/796 ... id-interfa
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»