smalljs$molRechercher⌘ KDocsPlaygroundComparerÉcosystèmeÀ proposFR
Schémas de donnéesGetting StartedIntroductionModèle mentalDémarrageDe TypeScript à view.treeStructure d'un projetOutillageEssentialsInstallationVuesÉtat et réactivitéRoutageRenduTestsDéploiementDépannageDataRécupération de donnéesSchémas de donnéesGiper BazaMoreVitrineDe React, Vue et SvelteRecettesAdvancedPluginsMétadonnées de moduleHors-ligneVues fantômesAboutFAQÉquipeVersionsAPI$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

Schémas de données

Les données qui reviennent d'une requête réseau sont de type any — TypeScript fait confiance à votre cast, mais le serveur pourrait envoyer autre chose. $mol fournit deux petites bibliothèques de schémas à l'exécution qui transforment du JSON non fiable en une valeur typée et validée, et échouent bruyamment — avec un chemin lisible — quand la forme est incorrecte. Utilisez-les là où les données entrent dans l'application, le plus souvent sur une réponse fetch.

Deux bibliothèques

$mol_data — des parseurs fonctionnels et concis (à la zod). Vous composez de petites fonctions de parsing et appelez le résultat sur une valeur.$mol_schema — des schémas basés sur des classes avec valeurs par défaut. Vous étendez une classe d'enregistrement et obtenez .guard(), .cast(), .check() et un .default.Les deux valident à l'exécution et infèrent le type statique pour vous. Choisissez $mol_data pour des DTO rapides et la (dé)sérialisation ; choisissez $mol_schema quand vous voulez des classes de schéma nommées et réutilisables avec des valeurs par défaut et un cast souple.

$mol_data

Décrivez la forme comme un enregistrement de parseurs de champs :1const UserDTO = $mol_data_record({2 name: $mol_data_string,3 age: $mol_data_optional( $mol_data_integer ),4 mail: $mol_data_email,5})Appelez-le sur la valeur brute. Les données valides passent, entièrement typées ; les données incorrectes lèvent une $mol_data_error nommant le chemin exact qui a échoué :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 /.+@.+/Réutilisez le type inféré partout avec typeof UserDTO.Value :1function greet( user: typeof UserDTO.Value ) {2 return `Hello, ${ user.name }`3}Les briques de base incluent $mol_data_string, $mol_data_number, $mol_data_integer, $mol_data_boolean, $mol_data_email, $mol_data_optional, $mol_data_nullable, $mol_data_variant (l'un de plusieurs types), $mol_data_array, $mol_data_dict et $mol_data_record. $mol_data_pipe fait passer une valeur parsée dans une transformation — par exemple une chaîne ISO en un $mol_time_moment — ce qui sert aussi de (dé)sérialisation.

$mol_schema

Définissez un schéma comme une classe qui étend un enregistrement :1export class $my_user extends $mol_schema_record({2 name: $mol_schema_string,3 age: $mol_schema_natural,4}) {}Vous avez alors trois façons de l'appliquer, plus une valeur par défaut prête à l'emploi :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 }Les schémas feuilles incluent $mol_schema_string, $mol_schema_integer, $mol_schema_natural, $mol_schema_float, $mol_schema_boolean, $mol_schema_enum([ ... ]) et $mol_schema_pattern( /re/ ). Composez-les avec $mol_schema_list( Item ), $mol_schema_dict([ Key, Val ]), $mol_schema_maybe( S ) (une valeur, null ou undefined), $mol_schema_some([ ... ]) (une union) et $mol_schema_partial({ ... }). Étalez les champs d'un autre enregistrement avec ...Base.Fields :
Modifier cette page sur GitHubÉtait-ce utile ?OuiNonPrécédentRécupération de donnéesSuivantGiper Baza
Sur cette pageDeux bibliothèques$mol_data$mol_schemaValider une réponse fetchSuite
Type to search the documentation.