Data, která se vracejí ze síťového požadavku, mají typ any — TypeScript věří vašemu přetypování, ale server může poslat něco jiného. $mol přináší dvě malé runtime knihovny schémat, které promění nedůvěryhodný JSON v typovanou, ověřenou hodnotu a hlasitě selžou — s čitelnou cestou — když je tvar špatný. Používejte je přímo tam, kde data vstupují do aplikace, nejčastěji na odpovědi fetch.
$mol_data — stručné funkcionální parsery (ve stylu zod). Skládáte malé parsovací funkce a výsledek voláte na hodnotě.$mol_schema — schémata založená na třídách s výchozími hodnotami. Rozšíříte třídu záznamu a získáte .guard(), .cast(), .check() a .default.Obě ověřují za běhu a odvodí za vás statický typ. Sáhněte po $mol_data pro rychlé DTO a (de)serializaci; sáhněte po $mol_schema, když chcete pojmenované, znovupoužitelné třídy schémat s výchozími hodnotami a volnějším přetypováním.
Popište tvar jako záznam parserů polí:1const UserDTO=$mol_data_record({2name:$mol_data_string,3age:$mol_data_optional($mol_data_integer),4mail:$mol_data_email,5})Zavolejte jej na surové hodnotě. Platná data projdou, plně typovaná; neplatná data vyhodí $mol_data_error s přesnou cestou, která selhala:1const user=UserDTO(json)2// user: { readonly name: string; readonly age?: number; readonly mail: string }34// If json.mail is "</script>", it throws:5// ["mail"] </script> is not a /.+@.+/Odvozený typ znovu použijte kdekoli pomocí typeof UserDTO.Value:1function greet(user:typeofUserDTO.Value){2return `Hello, ${ user.name }`3}Mezi stavební kameny patří $mol_data_string, $mol_data_number, $mol_data_integer, $mol_data_boolean, $mol_data_email, $mol_data_optional, $mol_data_nullable, $mol_data_variant (jeden z několika typů), $mol_data_array, $mol_data_dict a $mol_data_record. $mol_data_pipe přivede rozparsovanou hodnotu do transformace — například řetězec ISO do $mol_time_moment — což zároveň slouží jako (de)serializace.
Definujte schéma jako třídu, která rozšiřuje záznam:1export class $my_userextends$mol_schema_record({2name:$mol_schema_string,3age:$mol_schema_natural,4}){}Pak máte tři způsoby, jak jej použít, plus hotovou výchozí hodnotu: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 }Mezi listová schémata patří $mol_schema_string, $mol_schema_integer, $mol_schema_natural, $mol_schema_float, $mol_schema_boolean, $mol_schema_enum([...]) a $mol_schema_pattern(/re/). Skládejte je pomocí $mol_schema_list(Item), $mol_schema_dict([Key,Val]), $mol_schema_maybe(S) (hodnota, null nebo undefined), $mol_schema_some([...]) (sjednocení) a $mol_schema_partial({...}). Rozprostřete pole jiného záznamu pomocí ...Base.Fields:Upravit tuto stránku na GitHubuBylo to užitečné?AnoNePředchozíNačítání datDalšíGiper BazaNa této stránceDvě knihovny$mol_data$mol_schemaOvěření odpovědi fetchDáleType to search the documentation.