smalljs$molCerca⌘ KDocumentazionePlaygroundConfrontoEcosistemaInformazioniIT
Schemi di datiGetting StartedIntroduzioneModello mentalePer iniziareDa TypeScript a view.treeStruttura del progettoStrumentiEssentialsInstallazioneVisteStato e reattivitàRoutingRenderingTestingDeploymentRisoluzione dei problemiDataRecupero datiSchemi di datiGiper BazaMoreVetrinaDa React, Vue e SvelteRicettarioAdvancedPluginMetadati del moduloOfflineViste fantasmaAboutFAQTeamReleaseAPI$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

Schemi di dati

I dati che tornano da una richiesta di rete sono any — TypeScript si fida del tuo cast, ma il server potrebbe inviare qualcos'altro. $mol offre due piccole librerie di schemi a runtime che trasformano JSON non attendibile in un valore tipizzato e validato, e falliscono rumorosamente — con un percorso leggibile — quando la forma è sbagliata. Usale proprio dove i dati entrano nell'app, il più delle volte su una risposta fetch.

Due librerie

$mol_data — parser funzionali e concisi (in stile zod). Componi piccole funzioni di parsing e chiami il risultato su un valore.$mol_schema — schemi basati su classi con valori predefiniti. Estendi una classe record e ottieni .guard(), .cast(), .check() e un .default.Entrambi validano a runtime e inferiscono il tipo statico per te. Scegli $mol_data per DTO rapidi e (de)serializzazione; scegli $mol_schema quando vuoi classi di schema nominate e riutilizzabili con valori predefiniti e cast permissivo.

$mol_data

Descrivi la forma come un record di parser di campi:1const UserDTO = $mol_data_record({2 name: $mol_data_string,3 age: $mol_data_optional( $mol_data_integer ),4 mail: $mol_data_email,5})Chiamalo sul valore grezzo. I dati validi passano, completamente tipizzati; i dati errati lanciano un $mol_data_error che nomina il percorso esatto che è fallito: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 /.+@.+/Riusa il tipo inferito ovunque con typeof UserDTO.Value:1function greet( user: typeof UserDTO.Value ) {2 return `Hello, ${ user.name }`3}I mattoni di base includono $mol_data_string, $mol_data_number, $mol_data_integer, $mol_data_boolean, $mol_data_email, $mol_data_optional, $mol_data_nullable, $mol_data_variant (uno di più tipi), $mol_data_array, $mol_data_dict e $mol_data_record. $mol_data_pipe immette un valore parsato in una trasformazione — per esempio una stringa ISO in un $mol_time_moment — che funge anche da (de)serializzazione.

$mol_schema

Definisci uno schema come classe che estende un record:1export class $my_user extends $mol_schema_record({2 name: $mol_schema_string,3 age: $mol_schema_natural,4}) {}Hai quindi tre modi per applicarlo, più un valore predefinito già pronto: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 }Gli schemi foglia includono $mol_schema_string, $mol_schema_integer, $mol_schema_natural, $mol_schema_float, $mol_schema_boolean, $mol_schema_enum([ ... ]) e $mol_schema_pattern( /re/ ). Componili con $mol_schema_list( Item ), $mol_schema_dict([ Key, Val ]), $mol_schema_maybe( S ) (un valore, null o undefined), $mol_schema_some([ ... ]) (un'unione) e $mol_schema_partial({ ... }). Espandi i campi di un altro record con ...Base.Fields:
Modifica questa pagina su GitHubÈ stato utile?NoPrecedenteRecupero datiSuccessivoGiper Baza
In questa paginaDue librerie$mol_data$mol_schemaValidare una risposta fetchAvanti
Type to search the documentation.