smalljs$molجستجو⌘ Kمستنداتزمین بازیمقایسهاکوسیستمدربارهFA
طرح‌واره‌های دادهGetting Startedمعرفیمدل ذهنیشروع به کاراز تایپ‌اسکریپت به 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 به cast شما اعتماد می‌کند، اما سرور ممکن است چیز دیگری بفرستد. $mol دو کتابخانهٔ کوچکِ طرح‌وارهٔ زمان‌اجرا فراهم می‌کند که JSONِ نامطمئن را به یک مقدارِ نوع‌دار و اعتبارسنجی‌شده تبدیل می‌کنند و وقتی شکل نادرست باشد با صدای بلند شکست می‌خورند — همراه با یک مسیرِ خوانا. آن‌ها را درست همان‌جا که داده وارد برنامه می‌شود به کار ببرید، بیشتر اوقات روی پاسخِ fetch.

دو کتابخانه

$mol_data — پارسرهای تابعیِ مختصر (به سبک zod). توابع پارسِ کوچک را ترکیب می‌کنید و نتیجه را روی یک مقدار فرا می‌خوانید.$mol_schema — طرح‌واره‌های مبتنی‌بر کلاس با مقادیر پیش‌فرض. یک کلاسِ رکورد را گسترش می‌دهید و .guard()، .cast()، .check() و یک .default می‌گیرید.هر دو در زمان اجرا اعتبارسنجی می‌کنند و نوعِ ایستا را برای شما استنتاج می‌کنند. برای DTOهای سریع و (نا)سریال‌سازی سراغ $mol_data بروید؛ وقتی کلاس‌های طرح‌وارهٔ نام‌دار و قابل‌بازاستفاده با مقادیر پیش‌فرض و castِ آسان‌گیر می‌خواهید سراغ $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 ) (یک مقدار، null یا undefined$mol_schema_some([ ... ]) (یک اجتماع) و $mol_schema_partial({ ... }) ترکیب کنید. فیلدهای یک رکوردِ دیگر را با ...Base.Fields بگسترانید:
ویرایش این صفحه در GitHubآیا این مفید بود؟بلهخیرقبلیدریافت دادهبعدیGiper Baza
در این صفحهدو کتابخانه$mol_data$mol_schemaاعتبارسنجی یک پاسخِ fetchبعدی
Type to search the documentation.