Zod CoerceArray

coerceArray Funktion

Bei der Verwendung von Zod zur Schema-Validierung stößt man manchmal auf die Herausforderung, dass die API sowohl einzelne Werte als auch Arrays akzeptieren soll. Die Funktion coerceArray löst dieses Problem elegant, indem sie jede Eingabe zuverlässig in ein Array-Format umwandelt. Kein manuelles Array.isArray()-Checking mehr! 🎉

import type { ZodType } from 'zod';
import { z } from 'zod';

export function coerceArray<T extends ZodType>(schema: T) {
  return z
    .union([schema, z.array(schema)])
    .transform((rel) => (Array.isArray(rel) ? rel : [rel]) as T['_output'][]);
}

Nutzungsbeispiel

Das folgende Beispiel zeigt, wie coerceArray in der Praxis verwendet wird. Egal ob einzelner Wert oder bereits ein Array, das Ergebnis ist immer konsistent:

import { z } from 'zod';
import { coerceArray } from './coerceArray';

const schema = coerceArray(z.enum(['active', 'inactive']));

// Validierung von Einzelwerten
schema.parse('active'); // ['active']
schema.parse(['active', 'inactive']); // ['active', 'inactive']

© 2025 - Alexander Friesen