javascript / intermediate
Snippet
Laufzeit-Schema-Validierung für typisierte Store-Daten
Während Svelte Stores reaktiven Zustand verwalten, validieren sie Datentypen zur Laufzeit standardmäßig nicht. Durch das Kapseln der Store-Logik mit einem Schema-Validierungstool wie Zod wird sichergestellt, dass ungültige Datenstrukturen sofort verständliche Laufzeitfehler auslösen.
snippet.js
javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import { writable } from 'svelte/store';import { z } from 'zod';const UserProfileSchema = z.object({id: z.number().int().positive(),email: z.string().email(),roles: z.array(z.string())});export function createValidatedUserStore(initialData) {const { subscribe, set } = writable(null);function updateSafely(newData) {const result = UserProfileSchema.safeParse(newData);if (!result.success) {throw new TypeError(`Invalid store data structure: ${result.error.message}`);}set(result.data);}updateSafely(initialData);return { subscribe, setSafely: updateSafely };}
svelte
Erklärung
1
const UserProfileSchema = z.object({
Definiert ein striktes Objektschema, das bestimmte Datentypen für Primitiven und Arrays vorschreibt.
2
const result = UserProfileSchema.safeParse(newData);
Überprüft die eingehenden Daten zur Laufzeit, ohne sofort unbehandelte Ausnahmen zu werfen.
3
if (!result.success) { throw new TypeError(`Invalid store data structure: ${result.error.message}`); }
Schützt die Zustandsintegrität durch Auslösen eines gezielten Fehlers, wenn die Datenstruktur ungültig ist.
4
return { subscribe, setSafely: updateSafely };
Gibt ein benutzerdefiniertes Store-Objekt mit Standard-Abonnement und sicherer Schreibfunktion zurück.