diff --git a/src/api/custom-renderer.md b/src/api/custom-renderer.md index 03098f1f..d78b10a3 100644 --- a/src/api/custom-renderer.md +++ b/src/api/custom-renderer.md @@ -2,7 +2,7 @@ ## createRenderer() {#createrenderer} -یک رندرکننده سفارشی ایجاد می‌کند. با ارائه APIهای مختص پلتفرم برای ایجاد و دستکاری node، می توانید از هسته ران‌تایم Vue برای هدف قرار دادن محیط های غیر DOM استفاده کنید. +یک رندرکننده سفارشی ایجاد می‌کند. با ارائه APIهای مختص پلتفرم برای ایجاد و دستکاری node، می‌توانید از هسته ران‌تایم Vue برای هدف قرار دادن محیط‌های غیر DOM استفاده کنید. - **تایپ (Type)** diff --git a/src/api/general.md b/src/api/general.md index 28a9fe06..04f0c133 100644 --- a/src/api/general.md +++ b/src/api/general.md @@ -2,7 +2,7 @@ ## ورژن {#version} -نسخه فعلی Vue را نشان می دهد. +نسخه فعلی Vue را نشان می‌دهد. - **تایپ:** `رشته(string) ` diff --git a/src/api/options-composition.md b/src/api/options-composition.md index e1856a43..05337edc 100644 --- a/src/api/options-composition.md +++ b/src/api/options-composition.md @@ -7,7 +7,7 @@ (value) را برای inject - کردن در کامپوننتهای فرزند فراهم میکند. + کردن در کامپوننت‌های فرزند فراهم می‌کند. - **تایپ (Type)** @@ -19,9 +19,9 @@ - **جزئیات** -توابع `provide` و ‍[`inject`](#inject) در کنار هم استفاده میشوند تا به کامپوننت های والد اجازه دهند به عنوان dependency injector نسبت به کامپوننتهای فرزند عمل کنند، بدون در نظر گرفتن اینکه سلسله مراتب کامپوننتها چقدر عمیق هستند تا زمانی که همگی داخل یک زنجیر والد (parent chain) باشند. +توابع `provide` و ‍[`inject`](#inject) در کنار هم استفاده می‌شوند تا به کامپوننت‌های والد اجازه دهند به عنوان dependency injector نسبت به کامپوننت‌های فرزند عمل کنند، بدون در نظر گرفتن اینکه سلسله مراتب کامپوننت‌ها چقدر عمیق هستند تا زمانی که همگی داخل یک زنجیر والد (parent chain) باشند. -آپشن `provide` باید object یا یک تابع که یک object بازگردانی میکند باشد. این object شامل پراپرتیهایی است که برای inject در فرزندان در دسترس هستند. شما میتوانید از Symbol ها به عنوان کلید (key) در این object استفاده کنید. +آپشن `provide` باید object یا یک تابع که یک object بازگردانی می‌کند باشد. این object شامل پراپرتی‌هایی است که برای inject در فرزندان در دسترس هستند. شما می‌توانید از Symbol ها به عنوان کلید (key) در این object استفاده کنید. @@ -62,7 +62,7 @@ ## تابع ()inject {#inject} -پراپرتی هایی برای inject کردن در کامپوننت حاضر با مکانیابی آنها از ancestor provider ها تعریف میکند. +پراپرتی‌هایی برای inject کردن در کامپوننت حاضر با مکان‌یابی آن‌ها از ancestor providerها تعریف می‌کند. - **تایپ (Type)** @@ -83,16 +83,16 @@ - **جزئیات** -آپشن `inject` باید یکی از حالتهای زیر باشد : +آپشن `inject` باید یکی از حالت‌های زیر باشد: -- آرایه ای از string ها +- آرایه‌ای از stringها - یا یک آبجکت که کلیدهای آن local binding name هستند و مقادیر آن یکی از موارد زیر است: - - یک کلید (string یا Symbol) برای جستجو در injection های قابل دسترس + - یک کلید (string یا Symbol) برای جستجو در injectionهای قابل دسترس - یا یک object که در آن: - - پراپرتی ‍`from` کلیدی است (string یا Symbol) برای جستجو در injection های در دسترس - - پراپرتی `default` به عنوان یک fallback value استفاده میشود. همانند مقدار پیشفرض برای props یک تابع factory برای object types ها نیاز است تا از اشتراک value بین چندین component instance جلوگیری کند + - پراپرتی ‍`from` کلیدی است (string یا Symbol) برای جستجو در injectionهای در دسترس + - پراپرتی `default` به عنوان یک fallback value استفاده می‌شود. همانند مقدار پیش‌فرض برای props یک تابع factory برای object typesها نیاز است تا از اشتراک value بین چندین component instance جلوگیری کند -اگر هیچ پراپرتی match شده و یا مقدار پیشفرضی provide نشده باشد injected property برابر با undefined خواهد بود. +اگر هیچ پراپرتی match شده و یا مقدار پیشفرضی provide نشده باشد، injected property برابر با undefined خواهد بود. - **مثالها** @@ -158,7 +158,7 @@ Injection ها می توانند با مقدار پیش فرض اختیاری ب } ``` -همانند prop defaults, شما باید از یک تابع factory برای مقادیر non-primitive استفاده کنید +همانند prop defaults، شما باید از یک تابع factory برای مقادیر non-primitive استفاده کنید ```js @@ -174,9 +174,9 @@ Injection ها می توانند با مقدار پیش فرض اختیاری ب - **همچنین ببینید** [Provide / Inject](/guide/components/provide-inject) -## میکسینها (mixins) {#mixins} +## میکسین‌ها (mixins) {#mixins} -یک آرایه از option object ها برای ترکیب شدن در کامپوننت حاضر. +یک آرایه از option objectها برای ترکیب شدن در کامپوننت حاضر. - **تایپ (Type)** @@ -188,12 +188,12 @@ Injection ها می توانند با مقدار پیش فرض اختیاری ب - **جزئیات** -آپشن mixins یک آرایه از mixin object ها را می‌پذیرد. این mixin object ها می‌توانند شامل instance option ها مانند instance object های عادی باشند و در نهایت با option های نهایی با استفاده از منطق مشخص ادغام option ها ادغام خواهند شد. به عنوان مثال، اگر mixin شما یک هوک created داشته باشد و خود کامپوننت هم یک هوک مشابه داشته باشد، هر دو تابع فراخوانی خواهند شد. +آپشن mixins یک آرایه از mixin objectها را می‌پذیرد. این mixin objectها می‌توانند شامل instance optionها مانند instance objectهای عادی باشند و در نهایت با optionهای نهایی با استفاده از منطق مشخص ادغام optionها ادغام خواهند شد. به عنوان مثال، اگر mixin شما یک هوک created داشته باشد و خود کامپوننت هم یک هوک مشابه داشته باشد، هر دو تابع فراخوانی خواهند شد. هوک‌های mixin به ترتیبی که provide شده‌اند و قبل از هوک‌های خود کامپوننت فراخوانی می‌شوند. - :::warning دیگر پیشنهاد نمیشود - در 2 Vue میکسین ها (mixins) مکانیزم اصلی برای ساخت تکه های قابل استفاده مجدد از کامپوننت ها بودند. درحالی که mixin ها در Vue 3 پشتیبانی میشوند با این حال [ توابع Composable با استفاده از Composition API](/guide/reusability/composables) حالا راه حل مقدمتر و ترجیح داده شده برای استفاده مجدد از کدها بین کامپوننتهاست. + :::warning دیگر پیشنهاد نمی‌شود + در 2 Vue میکسین ها (mixins) مکانیزم اصلی برای ساخت تکه‌های قابل استفاده مجدد از کامپوننت‌ها بودند. درحالی که mixinها در Vue 3 پشتیبانی میشوند با این حال [ توابع Composable با استفاده از Composition API](/guide/reusability/composables) حالا راه حل مقدم‌تر و ترجیح داده شده برای استفاده مجدد از کدها بین کامپوننت‌هاست. ::: - **مثالها** @@ -230,13 +230,13 @@ Injection ها می توانند با مقدار پیش فرض اختیاری ب - **جزئیات** -به یک کامپوننت اجازه می دهد تا دیگری را extend کند و option های کامپوننت را به ارث ببرد. +به یک کامپوننت اجازه می‌دهد تا دیگری را extend کند و optionهای کامپوننت را به ارث ببرد. از دیدگاه پیاده‌سازی، extends تقریباً همانند mixins است. کامپوننت مشخص‌شده توسط extends به عنوان اینکه یک mixin اولیه باشد، پردازش خواهد شد. -با این حال `extends` و `mixins` اهداف مختلفی را بیان میکنند. آپشن `mixins` در اصل برای ساخت تکه های (chunks) یک functionality استفاده میشود در حالی که `extends` به طور اساسی برای بحث وراثت (inheritance) مورد استفاده قرار میگیرد. +با این حال `extends` و `mixins` اهداف مختلفی را بیان می‌کنند. آپشن `mixins` در اصل برای ساخت تکه‌های (chunks) یک functionality استفاده می‌شود در حالی که `extends` به طور اساسی برای بحث وراثت (inheritance) مورد استفاده قرار می‌گیرد. -همانند `mixins` هر option (بجز ()setup) توسط استراتژیهای مرج رایج مرج خواهد شد. +همانند `mixins` هر option (بجز ()setup) توسط استراتژی‌های مرج رایج مرج خواهد شد. - **مثال** @@ -249,12 +249,12 @@ Injection ها می توانند با مقدار پیش فرض اختیاری ب } ``` - :::warning برای Composition API توصیه نمی شود - `extends` برای `Options API` طراحی شده است و merging متعلق به هوک `()setup` را handle نمی کند. + :::warning برای Composition API توصیه نمی‌شود + `extends` برای `Options API` طراحی شده است و merging متعلق به هوک `()setup` را handle نمی‌کند. - در Composition API مدل ذهنی که نسبت به وراثت برای logic reuse ترجیح داده میشود "compose" است. اگر شما منطقی در یک کامپوننت دارید که نیاز به استفاده مجدد از آن در کامپوننت دیگر است منطق مد نظر را به یک Composable انتقال دهید. + در Composition API مدل ذهنی که نسبت به وراثت برای logic reuse ترجیح داده می‌شود "compose" است. اگر شما منطقی در یک کامپوننت دارید که نیاز به استفاده مجدد از آن در کامپوننت دیگر است منطق مد نظر را به یک Composable انتقال دهید. - اگر همجنان قصد دارید توسط Composition API یک کامپوننت را extend کنید میتوانید `()setup` متعلق به کامپوننت base را داخل ‍`()setup` متعلق به کامپوننتی که میخواهید extend کنید فراخوانی کنید: + اگر همجنان قصد دارید توسط Composition API یک کامپوننت را extend کنید می‌توانید `()setup` متعلق به کامپوننت base را داخل ‍`()setup` متعلق به کامپوننتی که می‌خواهید extend کنید فراخوانی کنید: ```js import Base from './Base.js' diff --git a/src/api/options-misc.md b/src/api/options-misc.md index 9ccb0904..472744fc 100644 --- a/src/api/options-misc.md +++ b/src/api/options-misc.md @@ -2,7 +2,7 @@ ## نام {#name} -به صراحت یک نام نمایشی (display name) برای کامپوننت تعریف میکند. +به صراحت یک نام نمایشی (display name) برای کامپوننت تعریف می‌کند. - **تایپ (Type)** @@ -14,27 +14,27 @@ - **جزئیات** - نام کامپوننت برای موارد زیر استفاده میشود: + نام کامپوننت برای موارد زیر استفاده می‌شود: - خود ارجاعی بازگشتی (Recursive self-reference) در تمپلیت خود کامپوننت - نمایش در درخت بازرسی (inspection tree) کامپوننت متعلق به Vue DevTools - نمایش در trance‌های کامپوننت اخطار (warning) - زمانی که از کامپوننتهای تک فایلی استفاده میکنید کامپوننت از قبل نام خود را از نام فایل میخواند (infer میکند). برای مثال یک فایل با نام `MyComponent.vue` نام نمایشی "MyComponent" را میخواند. + زمانی که از کامپوننت‌های تک فایلی استفاده می‌کنید کامپوننت از قبل نام خود را از نام فایل می‌خواند (infer می‌کند). برای مثال یک فایل با نام `MyComponent.vue` نام نمایشی "MyComponent" را می‌خواند. - مورد دیگر زمانی است که یک کامپوننت به صورت سراسری (global) با [`app.component`](/api/application#app-component) ثبت شده باشد که در این صورت آیدی سراسری به شکل خودکار به عنوان نام کامپوننت قرار میگیرد. + مورد دیگر زمانی است که یک کامپوننت به صورت سراسری (global) با [`app.component`](/api/application#app-component) ثبت شده باشد که در این صورت آیدی سراسری به شکل خودکار به عنوان نام کامپوننت قرار می‌گیرد. - آپشن `name` به شما اجازه میدهد که نام infer شده را نادیده بگیرید یا زمانی که هیچ نامی نمیتواند infer شود به صورت مشخص یک نام تعیین کنید (برای مثال زمانی که از ابزارهای ساخت (build tools) استفاده نمیشود یا در یک کامپوننت غیر تک فایلی که به صورت inline هستند) + آپشن `name` به شما اجازه می‌دهد که نام infer شده را نادیده بگیرید یا زمانی که هیچ نامی نمی‌تواند infer شود به صورت مشخص یک نام تعیین کنید (برای مثال زمانی که از ابزارهای ساخت (build tools) استفاده نمی‌شود یا در یک کامپوننت غیر تک فایلی که به صورت inline هستند) - یک مورد وجود دارد که نام صراحتاً ضروری است: هنگام تطبیق با کامپوننتهای قابل کش در [``](/guide/built-ins/keep-alive) از طریق prop های `include / exclude` آن. + یک مورد وجود دارد که نام صراحتاً ضروری است: هنگام تطبیق با کامپوننت‌های قابل کش در [``](/guide/built-ins/keep-alive) از طریق propهای `include / exclude` آن. :::tip نکته - از نسخه 3.2.34, یک کامپوننت تک فایلی با استفاده از ` ``` - وقتی که از `toRef` با propهای کامپوننت استفاده میکنید، محدودیت تغییر prop همچنان اعمال میشود. تلاش برای اختصاص یک مقدار جدید به ref معادل تلاش برای تغییر مستقیم prop است و مجاز نیست. در آن سناریو ممکن است بخواهید از [`computed`](./reactivity-core#computed) با `get` و `set` استفاده کنید. برای اطلاعات بیشتر به راهنمای [استفاده از `v-model` با کامپوننت‌ها](/guide/components/v-model) مراجعه کنید. + وقتی که از `toRef` با propهای کامپوننت استفاده می‌کنید، محدودیت تغییر prop همچنان اعمال می‌شود. تلاش برای اختصاص یک مقدار جدید به ref معادل تلاش برای تغییر مستقیم prop است و مجاز نیست. در آن سناریو ممکن است بخواهید از [`computed`](./reactivity-core#computed) با `get` و `set` استفاده کنید. برای اطلاعات بیشتر به راهنمای [استفاده از `v-model` با کامپوننت‌ها](/guide/components/v-model) مراجعه کنید. - هنگام استفاده از امضای پروپرتی شی، `toRef()` یک ref قابل استفاده برمیگرداند حتی اگر پروپرتی منبع در حال حاضر وجود نداشته باشد. این کار با پروپرتی‌های اختیاری را ممکن می‌سازد، که توسط [`toRefs`](#torefs) قابل دریافت نیستند. + هنگام استفاده از امضای پروپرتی شی، `toRef()` یک ref قابل استفاده برمی‌گرداند حتی اگر پروپرتی منبع در حال حاضر وجود نداشته باشد. این کار با پروپرتی‌های اختیاری را ممکن می‌سازد، که توسط [`toRefs`](#torefs) قابل دریافت نیستند. ## toValue() {#tovalue} -مقدارها، refها و getterها را به مقدار نرمال‌سازی می‌کند. این شبیه به [unref()](#unref) است، با این تفاوت که getterها را نیز نرمال‌سازی می‌کند. اگر آرگومان getter باشد، فراخوانی می شود و مقدار برگشتی آن برگردانده می شود. +مقدارها، refها و getterها را به مقدار نرمال‌سازی می‌کند. این شبیه به [unref()](#unref) است، با این تفاوت که getterها را نیز نرمال‌سازی می‌کند. اگر آرگومان getter باشد، فراخوانی می‌شود و مقدار برگشتی آن برگردانده می‌شود. -این را می توان در [ترکیب‌پذیرها](/guide/reusability/composables.html) برای نرمال‌سازی آرگومان استفاده کرد که می تواند مقدار، ref یا getter باشد. +این را می‌توان در [ترکیب‌پذیرها](/guide/reusability/composables.html) برای نرمال‌سازی آرگومان استفاده کرد که می تواند مقدار، ref یا getter باشد. - **تایپ (Type)** @@ -151,7 +151,7 @@ toValue(() => 1) // --> 1 ``` - نرمال‌سازی آرگومان ها در ترکیب‌پذیرها: + نرمال‌سازی آرگومان‌ها در ترکیب‌پذیرها: ```ts import type { MaybeRefOrGetter } from 'vue' @@ -162,7 +162,7 @@ }) } - // این ترکیب‌پذیر همه این حالات را پشتیبانی میکند + // این ترکیب‌پذیر همه این حالات را پشتیبانی می‌کند useFeature(1) useFeature(ref(1)) useFeature(() => 1) @@ -170,7 +170,7 @@ ## toRefs() {#torefs} -یک شی واکنش‌پذیر را به یک شیء ساده تبدیل می کند که در آن هر پروپرتی از شیء به دست آمده یک ref است که به پروپرتی متناظر شی اصلی اشاره می کند. هر مرجع با استفاده از [`toRef()`](#toref) ایجاد می شود. +یک شی واکنش‌پذیر را به یک شیء ساده تبدیل می‌کند که در آن هر پروپرتی از شیء به دست آمده یک ref است که به پروپرتی متناظر شی اصلی اشاره می‌کند. هر مرجع با استفاده از [`toRef()`](#toref) ایجاد می‌شود. - **تایپ (Type)** @@ -227,11 +227,11 @@ const { foo, bar } = useFeatureX() ``` - `toRefs` فقط برای پروپرتی‌هایی که در زمان فراخوانی روی شی مبدأ قابل شمارش هستند، ref ایجاد می کند. برای ایجاد ref برای پروپرتی ای که ممکن است هنوز وجود نداشته باشد، به جای آن از [`toRef`](#toref) استفاده کنید. + `toRefs` فقط برای پروپرتی‌هایی که در زمان فراخوانی روی شی مبدأ قابل شمارش هستند، ref ایجاد می‌کند. برای ایجاد ref برای پروپرتی‌ای که ممکن است هنوز وجود نداشته باشد، به جای آن از [`toRef`](#toref) استفاده کنید. ## isProxy() {#isproxy} -بررسی میکند که آیا یک شی، proxy ای است که توسط [`reactive()`](./reactivity-core#reactive), [`readonly()`](./reactivity-core#readonly), [`shallowReactive()`](./reactivity-advanced#shallowreactive) یا [`shallowReadonly()`](./reactivity-advanced#shallowreadonly) ساخته شده است یا خیر. +بررسی می‌کند که آیا یک شی، proxyای است که توسط [`reactive()`](./reactivity-core#reactive), [`readonly()`](./reactivity-core#readonly), [`shallowReactive()`](./reactivity-advanced#shallowreactive) یا [`shallowReadonly()`](./reactivity-advanced#shallowreadonly) ساخته شده است یا خیر. - **تایپ (Type)** @@ -241,7 +241,7 @@ ## isReactive() {#isreactive} -بررسی میکند که آیا یک شی، proxy ای است که توسط [`reactive()`](./reactivity-core#reactive) یا [`shallowReactive()`](./reactivity-advanced#shallowreactive) ساخته شده است یا خیر. +بررسی می‌کند که آیا یک شی، proxyای است که توسط [`reactive()`](./reactivity-core#reactive) یا [`shallowReactive()`](./reactivity-advanced#shallowreactive) ساخته شده است یا خیر. - **تایپ (Type)** @@ -251,9 +251,9 @@ ## isReadonly() {#isreadonly} -بررسی می کند که آیا مقدار ارسال شده، یک شی “فقط خواندنی” است یا خیر. پروپرتی‌های یک شی فقط خواندنی می‌تواند تغییر کند، اما نمی‌توان آنها را مستقیماً از طریق شی ارسال شده انتساب داد. +بررسی می‌کند که آیا مقدار ارسال شده، یک شی “فقط خواندنی” است یا خیر. پروپرتی‌های یک شی فقط خواندنی می‌تواند تغییر کند، اما نمی‌توان آنها را مستقیماً از طریق شی ارسال شده انتساب داد. -proxyهای ایجاد شده توسط [`readonly()`](./reactivity-core#readonly) و [`shallowReadonly()`](./reactivity-advanced#shallowreadonly) هر دو فقط خواندنی در نظر گرفته می شوند، همانطور که [`computed()`](./reactivity-core#computed) بدون تابع `set` فقط خواندنی در نظر گرفته می‌شود. +proxyهای ایجاد شده توسط [`readonly()`](./reactivity-core#readonly) و [`shallowReadonly()`](./reactivity-advanced#shallowreadonly) هر دو فقط خواندنی در نظر گرفته می‌شوند، همانطور که [`computed()`](./reactivity-core#computed) بدون تابع `set` فقط خواندنی در نظر گرفته می‌شود. - **تایپ (Type)** diff --git a/src/api/render-function.md b/src/api/render-function.md index a11a40b9..17a81e66 100644 --- a/src/api/render-function.md +++ b/src/api/render-function.md @@ -187,7 +187,7 @@ - **جزئیات** - **توجه: اگر می توانید کامپوننت را مستقیماً import کنید، به این نیازی ندارید.** + **توجه: اگر می‌توانید کامپوننت را مستقیماً import کنید، به این نیازی ندارید.** تابع `resolveComponent()‎` باید در داخل `setup()‎` یا رندر فانکشن اجرا شود تا به درستی بتواند حتما از context یک کامپوننت صحیح این عملیات را انجام دهد. @@ -241,7 +241,7 @@ - **جزئیات** - **توجه: اگر می توانید دایرکتیو را مستقیماً import کنید، به این نیازی ندارید.** + **توجه: اگر می‌توانید دایرکتیو را مستقیماً import کنید، به این نیازی ندارید.** تابع `resolveDirective()‎` باید در داخل `setup()‎` یا رندر فانکشن اجرا شود تا به درستی بتواند حتما از context یک کامپوننت صحیح این عملیات را انجام دهد. diff --git a/src/api/sfc-script-setup.md b/src/api/sfc-script-setup.md index 72a28bdf..33c1fbd4 100644 --- a/src/api/sfc-script-setup.md +++ b/src/api/sfc-script-setup.md @@ -1,8 +1,8 @@ # \ ``` -`useSlots` و `useAttrs` در حقیقت runtime functions هستند که معادل `setupContext.slots` و `setupContext.attrs` می باشند. می‌توان آنها را در Composition API به عنوان توابع استفاده کرد. +`useSlots` و `useAttrs` در حقیقت runtime functions هستند که معادل `setupContext.slots` و `setupContext.attrs` می باشند. می‌توان آن‌ها را در Composition API به عنوان توابع استفاده کرد. ## استفاده همزمان با اسکریپت معمولی {#usage-alongside-normal-script} ` ``` -پشتیبانی برای استفاده همزمان از ` ``` -به علاوه، عبارتی که await می‌شود، به طور خودکار به حالتی تبدیل می‌شود که حالت فعلی اش را حفظ می کند. +به علاوه، عبارتی که await می‌شود، به طور خودکار به حالتی تبدیل می‌شود که حالت فعلی اش را حفظ می‌کند. :::warning نکته -`()async setup` باید همراه با [`Suspense`](/guide/built-ins/suspense.html) استفاده شود، که هنوز یک ویژگی آزمایشی است. ما قصد نهایی کردن مستندات را در یک ریلیز آینده خواهیم داشت - اما اگر کنجکاو هستید، می‌توانید با مشاهده گیتهاب [tests](https://github.com/vuejs/core/blob/main/packages/runtime-core/__tests__/components/Suspense.spec.ts) ببینید به چه صورت کار میکند. +`()async setup` باید همراه با [`Suspense`](/guide/built-ins/suspense.html) استفاده شود، که هنوز یک ویژگی آزمایشی است. ما قصد نهایی کردن مستندات را در یک ریلیز آینده خواهیم داشت - اما اگر کنجکاو هستید، می‌توانید با مشاهده گیت‌هاب [tests](https://github.com/vuejs/core/blob/main/packages/runtime-core/__tests__/components/Suspense.spec.ts) ببینید به چه صورت کار می‌کند. ::: -## جنریک ها {#generics} +## جنریک‌ها {#generics} با اضافه کردن اتریبیوت `generic` به تگ ` ``` -مقدار `generic` دقیقا به همان شکل لیست پارامترهای بین `<...>` در تایپ اسکریپت عمل میکند. برای مثال، میتوان از چندین پارامتر، محدودیت های `extends`، مقادیر پیش فرض و اشاره به تایپ های و اشاره شده (reference imported) استفاده کرد: +مقدار `generic` دقیقا به همان شکل لیست پارامترهای بین `<...>` در تایپ اسکریپت عمل می‌کند. برای مثال، می‌توان از چندین پارامتر، محدودیت‌های `extends`، مقادیر پیش‌فرض و اشاره به تایپ‌های و اشاره شده (reference imported) استفاده کرد: ```vue