$mol検索⌘ Kドキュメントプレイグラウンド比較エコシステム概要JAネットワークリクエストから返るデータは any です——TypeScript はあなたのキャストを信じますが、サーバーは別のものを送るかもしれません。$mol は、信頼できない JSON を型付き・検証済みの値に変え、形が間違っていれば読みやすいパスとともに大きく失敗する、2 つの小さなランタイムスキーマライブラリを備えています。データがアプリに入るまさにその場所、たいていは
fetch の応答で使ってください。$mol_data——簡潔で関数的なパーサー(zod 風)。小さなパース関数を組み合わせ、その結果を値に対して呼び出します。$mol_schema——既定値を持つクラスベースのスキーマ。レコードクラスを継承すると .guard()、.cast()、.check()、そして .default が手に入ります。どちらも実行時に検証し、静的型をあなたのために推論します。手早い DTO や(逆)シリアライズには $mol_data を、既定値と緩いキャストを備えた名前付き・再利用可能なスキーマクラスが欲しいときは $mol_schema を選んでください。形をフィールドパーサーのレコードとして記述します。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 へ——これは(逆)シリアライズも兼ねます。スキーマをレコードを継承するクラスとして定義します。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.