smalljs$molSuche⌘ KDokuPlaygroundVergleichÖkosystemÜberDE
DatenschemasGetting StartedEinführungMentales ModellErste SchritteVon TypeScript zu view.treeProjektstrukturWerkzeugeEssentialsInstallationViewsZustand und ReaktivitätRoutingRenderingTestenDeploymentFehlerbehebungDataDatenabrufDatenschemasGiper BazaMoreSchaufensterVon React, Vue und SvelteKochbuchAdvancedPluginsModul-MetadatenOfflineGhost-AnsichtenAboutFAQTeamReleasesAPI$mol_button_major$mol_button_minor$mol_string$mol_number$mol_text$mol_paragraph$mol_list$mol_row$mol_link$mol_check$mol_switch$mol_select$mol_scroll$mol_page$mol_pick

Datenschemas

Daten, die von einer Netzwerkanfrage zurückkommen, sind any — TypeScript vertraut Ihrem Cast, aber der Server könnte etwas anderes senden. $mol liefert zwei kleine Laufzeit-Schema-Bibliotheken, die nicht vertrauenswürdiges JSON in einen typisierten, validierten Wert verwandeln und laut fehlschlagen — mit einem lesbaren Pfad — wenn die Form falsch ist. Verwenden Sie sie genau dort, wo Daten in die App gelangen, meist bei einer fetch-Antwort.

Zwei Bibliotheken

$mol_data — knappe, funktionale Parser (zod-artig). Sie setzen kleine Parser-Funktionen zusammen und rufen das Ergebnis auf einem Wert auf.$mol_schema — klassenbasierte Schemas mit Standardwerten. Sie erweitern eine Record-Klasse und erhalten .guard(), .cast(), .check() und ein .default.Beide validieren zur Laufzeit und leiten den statischen Typ für Sie ab. Greifen Sie zu $mol_data für schnelle DTOs und (De-)Serialisierung; greifen Sie zu $mol_schema, wenn Sie benannte, wiederverwendbare Schema-Klassen mit Standardwerten und lockerem Casting wollen.

$mol_data

Beschreiben Sie die Form als Record von Feld-Parsern:1const UserDTO = $mol_data_record({2 name: $mol_data_string,3 age: $mol_data_optional( $mol_data_integer ),4 mail: $mol_data_email,5})Rufen Sie es auf dem Rohwert auf. Gültige Daten gehen durch, vollständig typisiert; ungültige Daten werfen einen $mol_data_error, der den genauen fehlgeschlagenen Pfad nennt:1const user = UserDTO( json )2// user: { readonly name: string; readonly age?: number; readonly mail: string }3 4// If json.mail is "</script>", it throws:5// ["mail"] </script> is not a /.+@.+/Verwenden Sie den abgeleiteten Typ überall wieder mit typeof UserDTO.Value:1function greet( user: typeof UserDTO.Value ) {2 return `Hello, ${ user.name }`3}Zu den Bausteinen gehören $mol_data_string, $mol_data_number, $mol_data_integer, $mol_data_boolean, $mol_data_email, $mol_data_optional, $mol_data_nullable, $mol_data_variant (einer von mehreren Typen), $mol_data_array, $mol_data_dict und $mol_data_record. $mol_data_pipe speist einen geparsten Wert in eine Transformation — zum Beispiel eine ISO-Zeichenkette in ein $mol_time_moment — was zugleich als (De-)Serialisierung dient.

$mol_schema

Definieren Sie ein Schema als Klasse, die einen Record erweitert:1export class $my_user extends $mol_schema_record({2 name: $mol_schema_string,3 age: $mol_schema_natural,4}) {}Sie haben dann drei Möglichkeiten, es anzuwenden, plus einen fertigen Standardwert:1const safe = $my_user.guard( input ) // strict: throws on wrong data2const relaxed = $my_user.cast( input ) // fills defaults instead of throwing3if ( $my_user.check( input ) ) { /* input is $my_user in here */ }4const blank = $my_user.default // { name: '', age: 0 }Zu den Blatt-Schemas gehören $mol_schema_string, $mol_schema_integer, $mol_schema_natural, $mol_schema_float, $mol_schema_boolean, $mol_schema_enum([ ... ]) und $mol_schema_pattern( /re/ ). Setzen Sie sie zusammen mit $mol_schema_list( Item ), $mol_schema_dict([ Key, Val ]), $mol_schema_maybe( S ) (ein Wert, null oder undefined), $mol_schema_some([ ... ]) (eine Vereinigung) und $mol_schema_partial({ ... }). Streuen Sie die Felder eines anderen Records mit ...Base.Fields:
Diese Seite auf GitHub bearbeitenWar das hilfreich?JaNeinZurückDatenabrufWeiterGiper Baza
Auf dieser SeiteZwei Bibliotheken$mol_data$mol_schemaEine fetch-Antwort validierenWeiter
Type to search the documentation.