smalljs$mol搜尋⌘ K文件遊樂場比較生態系統關於ZH_HK
資料模式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兩者都在執行期驗證,並為你推斷靜態型別。做快速 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}) {}於是你有三種方式來套用它,外加一個現成的預設值: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 )(值、nullundefined)、$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
本頁內容兩個函式庫$mol_data$mol_schema驗證一個 fetch 回應下一步
Type to search the documentation.