smalljs$molПошук⌘ KДокументаціяПісочницяПорівнянняЕкосистемаПро проєктUK
Схеми данихGetting StartedВступМентальна модельПочаток роботиВід TypeScript до view.treeСтруктура проєктуІнструментарійEssentialsВстановленняВидиСтан і реактивністьМаршрутизаціяРендерингТестуванняДеплойРозв'язання проблемDataОтримання данихСхеми данихGiper BazaMoreВітринаЗ React, Vue та SvelteЗбірник рецептівAdvancedПлагіниМетадані модуляОфлайнПодання-привидиAboutЧасті питанняКомандаРелізиAPI$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

Схеми даних

Дані, що повертаються з мережевого запиту, мають тип any — TypeScript довіряє вашому приведенню, але сервер може надіслати щось інше. $mol постачає дві невеликі бібліотеки схем часу виконання, які перетворюють ненадійний JSON на типізоване, перевірене значення й гучно падають — із читабельним шляхом — коли форма неправильна. Використовуйте їх саме там, де дані входять у застосунок, найчастіше на відповіді fetch.

Дві бібліотеки

$mol_data — стислі функціональні парсери (у стилі zod). Ви компонуєте маленькі функції-парсери й викликаєте результат на значенні.$mol_schema — схеми на основі класів зі значеннями за замовчуванням. Ви розширюєте клас-запис і отримуєте .guard(), .cast(), .check() та .default.Обидві перевіряють під час виконання й виводять статичний тип за вас. Беріть $mol_data для швидких DTO та (де)серіалізації; беріть $mol_schema, коли хочете іменовані, повторно використовувані класи схем зі значеннями за замовчуванням і м'яким приведенням.

$mol_data

Опишіть форму як запис парсерів полів:1const UserDTO = $mol_data_record({2 name: $mol_data_string,3 age: $mol_data_optional( $mol_data_integer ),4 mail: $mol_data_email,5})Викличте його на сирому значенні. Коректні дані проходять, повністю типізовані; некоректні дані кидають $mol_data_error, називаючи точний шлях, що не пройшов: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 /.+@.+/Повторно використовуйте виведений тип будь-де за допомогою typeof UserDTO.Value:1function greet( user: typeof UserDTO.Value ) {2 return `Hello, ${ user.name }`3}Будівельні блоки охоплюють $mol_data_string, $mol_data_number, $mol_data_integer, $mol_data_boolean, $mol_data_email, $mol_data_optional, $mol_data_nullable, $mol_data_variant (один із кількох типів), $mol_data_array, $mol_data_dict та $mol_data_record. $mol_data_pipe подає розібране значення в перетворення — наприклад ISO-рядок у $mol_time_moment — що заразом слугує (де)серіалізацією.

$mol_schema

Визначте схему як клас, що розширює запис:1export class $my_user extends $mol_schema_record({2 name: $mol_schema_string,3 age: $mol_schema_natural,4}) {}Тоді у вас є три способи застосувати її, плюс готове значення за замовчуванням: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 }Листові схеми охоплюють $mol_schema_string, $mol_schema_integer, $mol_schema_natural, $mol_schema_float, $mol_schema_boolean, $mol_schema_enum([ ... ]) та $mol_schema_pattern( /re/ ). Компонуйте їх за допомогою $mol_schema_list( Item ), $mol_schema_dict([ Key, Val ]), $mol_schema_maybe( S ) (значення, null або undefined), $mol_schema_some([ ... ]) (об'єднання) та $mol_schema_partial({ ... }). Розгорніть поля іншого запису за допомогою ...Base.Fields:
Редагувати цю сторінку на GitHubЦе було корисно?ТакНіНазадОтримання данихДаліGiper Baza
На цій сторінціДві бібліотеки$mol_data$mol_schemaПеревірка відповіді fetchДалі
Type to search the documentation.