smalljs$molPesquisar⌘ KDocsPlaygroundCompararEcossistemaSobrePT
Esquemas de dadosGetting StartedIntroduçãoModelo mentalPrimeiros passosDe TypeScript para view.treeEstrutura do projetoFerramentasEssentialsInstalaçãoViewsEstado e reatividadeRoteamentoRenderizaçãoTestesDeploySolução de problemasDataBusca de dadosEsquemas de dadosGiper BazaMoreVitrineDe React, Vue e SvelteLivro de receitasAdvancedPluginsMetadados de móduloOfflineVistas fantasmaAboutFAQEquipeLançamentosAPI$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

Esquemas de dados

Os dados que voltam de uma requisição de rede são any — o TypeScript confia no seu cast, mas o servidor pode enviar outra coisa. O $mol traz duas pequenas bibliotecas de esquema em tempo de execução que transformam JSON não confiável em um valor tipado e validado, e falham ruidosamente — com um caminho legível — quando o formato está errado. Use-as bem onde os dados entram no app, na maioria das vezes em uma resposta de fetch.

Duas bibliotecas

$mol_data — parsers funcionais e concisos (ao estilo zod). Você compõe pequenas funções de parsing e chama o resultado sobre um valor.$mol_schema — esquemas baseados em classes com valores padrão. Você estende uma classe de registro e obtém .guard(), .cast(), .check() e um .default.Ambas validam em tempo de execução e inferem o tipo estático para você. Recorra a $mol_data para DTOs rápidos e (des)serialização; recorra a $mol_schema quando quiser classes de esquema nomeadas e reutilizáveis com valores padrão e cast flexível.

$mol_data

Descreva o formato como um registro de parsers de campo:1const UserDTO = $mol_data_record({2 name: $mol_data_string,3 age: $mol_data_optional( $mol_data_integer ),4 mail: $mol_data_email,5})Chame-o sobre o valor bruto. Dados válidos passam, totalmente tipados; dados inválidos lançam um $mol_data_error nomeando o caminho exato que falhou: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 /.+@.+/Reutilize o tipo inferido em qualquer lugar com typeof UserDTO.Value:1function greet( user: typeof UserDTO.Value ) {2 return `Hello, ${ user.name }`3}Os blocos de construção incluem $mol_data_string, $mol_data_number, $mol_data_integer, $mol_data_boolean, $mol_data_email, $mol_data_optional, $mol_data_nullable, $mol_data_variant (um de vários tipos), $mol_data_array, $mol_data_dict e $mol_data_record. $mol_data_pipe alimenta um valor parseado em uma transformação — por exemplo uma string ISO em um $mol_time_moment — o que também serve como (des)serialização.

$mol_schema

Defina um esquema como uma classe que estende um registro:1export class $my_user extends $mol_schema_record({2 name: $mol_schema_string,3 age: $mol_schema_natural,4}) {}Você então tem três formas de aplicá-lo, além de um valor padrão pronto: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 }Os esquemas folha incluem $mol_schema_string, $mol_schema_integer, $mol_schema_natural, $mol_schema_float, $mol_schema_boolean, $mol_schema_enum([ ... ]) e $mol_schema_pattern( /re/ ). Componha-os com $mol_schema_list( Item ), $mol_schema_dict([ Key, Val ]), $mol_schema_maybe( S ) (um valor, null ou undefined), $mol_schema_some([ ... ]) (uma união) e $mol_schema_partial({ ... }). Espalhe os campos de outro registro com ...Base.Fields:
Editar esta página no GitHubIsto foi útil?SimNãoAnteriorBusca de dadosPróximoGiper Baza
Nesta páginaDuas bibliotecas$mol_data$mol_schemaValidar uma resposta de fetchPróximo
Type to search the documentation.