$mol搜尋⌘ K文件遊樂場比較生態系統關於ZH_HK從網路請求回傳的資料型別是 any——TypeScript 相信你的型別斷言,但伺服器可能傳來別的東西。$mol 提供兩個小巧的執行期模式函式庫,把不可信的 JSON 變成有型別、經過驗證的值,並在形狀錯誤時大聲失敗——附帶一條可讀的路徑。請在資料進入應用程式的地方使用它們,最常見的是在
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}) {}於是你有三種方式來套用它,外加一個現成的預設值: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本頁內容兩個函式庫$mol_data$mol_schema驗證一個 fetch 回應下一步Type to search the documentation.