smalljs$mol検索⌘ Kドキュメントプレイグラウンド比較エコシステム概要JA
データスキーマ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 を型付き・検証済みの値に変え、形が間違っていれば読みやすいパスとともに大きく失敗する、2 つの小さなランタイムスキーマライブラリを備えています。データがアプリに入るまさにその場所、たいていは fetch の応答で使ってください。

2 つのライブラリ

$mol_data——簡潔で関数的なパーサー(zod 風)。小さなパース関数を組み合わせ、その結果を値に対して呼び出します。$mol_schema——既定値を持つクラスベースのスキーマ。レコードクラスを継承すると .guard().cast().check()、そして .default が手に入ります。どちらも実行時に検証し、静的型をあなたのために推論します。手早い DTO や(逆)シリアライズには $mol_data を、既定値と緩いキャストを備えた名前付き・再利用可能なスキーマクラスが欲しいときは $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}) {}すると、適用する 3 つの方法に加えて、すぐ使える既定値が手に入ります。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 で展開します。1export class $my_account extends $mol_schema_record({2 ... $my_user.Fields,3 bio: $mol_schema_string,4}) {}
GitHub でこのページを編集役に立ちましたか?はいいいえ前へデータ取得次へGiper Baza
このページの内容2 つのライブラリ$mol_data$mol_schemafetch 応答の検証次へ
Type to search the documentation.