smalljs$molSzukaj⌘ KDokumentacjaPlaygroundPorównanieEkosystemO projekciePL
Schematy danychGetting StartedWprowadzenieModel mentalnyPierwsze krokiZ TypeScriptu do view.treeStruktura projektuNarzędziaEssentialsInstalacjaWidokiStan i reaktywnośćRoutingRenderowanieTestowanieWdrożenieRozwiązywanie problemówDataPobieranie danychSchematy danychGiper BazaMorePrezentacjaZ React, Vue i SvelteZbiór przepisówAdvancedWtyczkiMetadane modułuOfflineWidoki-duchyAboutFAQZespółWydaniaAPI$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

Schematy danych

Dane wracające z żądania sieciowego mają typ any — TypeScript ufa twojemu rzutowaniu, ale serwer może wysłać coś innego. $mol dostarcza dwie małe biblioteki schematów działające w czasie wykonania, które zamieniają niezaufany JSON w typowaną, zwalidowaną wartość i zawodzą głośno — z czytelną ścieżką — gdy kształt jest zły. Używaj ich tam, gdzie dane wchodzą do aplikacji, najczęściej na odpowiedzi fetch.

Dwie biblioteki

$mol_data — zwięzłe, funkcyjne parsery (w stylu zod). Komponujesz małe funkcje parsujące i wywołujesz wynik na wartości.$mol_schema — schematy oparte na klasach z wartościami domyślnymi. Rozszerzasz klasę rekordu i otrzymujesz .guard(), .cast(), .check() oraz .default.Obie walidują w czasie wykonania i wnioskują za ciebie typ statyczny. Sięgnij po $mol_data dla szybkich DTO i (de)serializacji; sięgnij po $mol_schema, gdy chcesz nazwane, wielokrotnego użytku klasy schematów z wartościami domyślnymi i luźnym rzutowaniem.

$mol_data

Opisz kształt jako rekord parserów pól:1const UserDTO = $mol_data_record({2 name: $mol_data_string,3 age: $mol_data_optional( $mol_data_integer ),4 mail: $mol_data_email,5})Wywołaj go na surowej wartości. Poprawne dane przechodzą, w pełni typowane; błędne dane rzucają $mol_data_error nazywający dokładną ścieżkę, która zawiodła: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 /.+@.+/Użyj ponownie wywnioskowanego typu wszędzie za pomocą typeof UserDTO.Value:1function greet( user: typeof UserDTO.Value ) {2 return `Hello, ${ user.name }`3}Klocki obejmują $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 kilku typów), $mol_data_array, $mol_data_dict oraz $mol_data_record. $mol_data_pipe przekazuje sparsowaną wartość do transformacji — na przykład ciąg ISO do $mol_time_moment — co jednocześnie służy jako (de)serializacja.

$mol_schema

Zdefiniuj schemat jako klasę rozszerzającą rekord:1export class $my_user extends $mol_schema_record({2 name: $mol_schema_string,3 age: $mol_schema_natural,4}) {}Masz wtedy trzy sposoby jego zastosowania oraz gotową wartość domyślną: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 }Schematy liściowe obejmują $mol_schema_string, $mol_schema_integer, $mol_schema_natural, $mol_schema_float, $mol_schema_boolean, $mol_schema_enum([ ... ]) oraz $mol_schema_pattern( /re/ ). Komponuj je za pomocą $mol_schema_list( Item ), $mol_schema_dict([ Key, Val ]), $mol_schema_maybe( S ) (wartość, null lub undefined), $mol_schema_some([ ... ]) (unia) oraz $mol_schema_partial({ ... }). Rozłóż pola innego rekordu za pomocą ...Base.Fields:
Edytuj tę stronę na GitHubieCzy to było pomocne?TakNiePoprzedniaPobieranie danychNastępnaGiper Baza
Na tej stronieDwie biblioteki$mol_data$mol_schemaWalidacja odpowiedzi fetchDalej
Type to search the documentation.