جادوی Typescript را کشف کنید

TypeScript گره جادویی برای توسعه JavaScript هنگام صحبت است اعتماد به نفس توسعه دهندهبا مقیاس پذیریوت بیانبشر ساخت برنامه های وب قوی امروز نیاز به ابزاری بهتر و ایمنی در زمان اجرا دارد.
این مقاله شما را با ویژگی های قدرتمند TypeScript ، از مفاهیم اساسی گرفته تا تکنیک های پیشرفته دستکاری از نوع پیشرفته آشنا می کند که می تواند کیفیت و بیان کد شما را ارتقا بخشد.
چرا Typescript؟
بیایید صادق باشیم ، JavaScript قدرتمند است اما به طور پیش فرض مقیاس خوبی ندارد. با رشد برنامه ها ، تایپ پویا می تواند به یک محدودیت تبدیل شود. TypeScript به ما می دهد:
- قابلیت پیش بینی: گرفتن اشکالات در زمان کامپایل قبل از رسیدن به کاربران.
- ابزارهای ابرقدرت: از مستندات خودکار تا درون خطی.
- اعتماد به نفس تیم: یک زبان مشترک برای توصیف شکل و هدف.
TypeScript برای جایگزینی JavaScript در اینجا نیست. آن را به آن کامپایل می کند ، بنابراین می توانید آن را به صورت تدریجی اتخاذ کنید.
TypeScript vs JavaScript
نشان | جاذب | شرح |
---|---|---|
تایپ کردن | پویا | استاتیک (با استنباط) |
ابزار | محدود | ثروتمند (Intellisense ، Refactoring) |
حفظ قابلیت | می تواند کثیف شود | مقیاس آسان تر |
منحنی یادگیری | آسان | تندتر ، اما پاداش دهنده |
JavaScript به شما انعطاف پذیری می دهد. TypeScript به شما اطمینان می دهد.
شروع با TypeScript
می توانید با یک نصب ساده شروع کنید:
npm install -g typescript
ایجاد یک فایل پیکربندی:
tsc --init
حالت سخت را فعال کنید. ارزشش را دارد
اصول اولیه
حاشیه نویسی و استنباط را تایپ کنید
let name: string = "Soumaya";
let age = 33; // inferred as number
انواع اساسی
-
string
باnumber
باboolean
: انواع داده های ابتدایی. - آرایه ها:
string[]
یاArray
– لیستی از موارد از یک نوع واحد. - tuples:
[string, number]
-یک آرایه با اندازه ثابت با انواع مشخص در هر شاخص. - Enums: برای ثابت های نامگذاری شده با مقادیر تقویت کننده خودکار یا تکالیف سفارشی.
enum Direction {
Up,
Down,
Left,
Right
}
انواع خاصی که باید بدانید
-
any
: چک کردن نوع را خاموش می کند. از مگر اینکه لازم باشد خودداری کنید. -
unknown
: مانندany
اما قبل از استفاده نیاز به بررسی نوع دارد. -
never
: نوعی که هرگز رخ نمی دهد. برای توابع مورد استفاده قرار می گیرد که پرتاب یا هرگز برنگردند.
انواع اتحادیه و تقاطع
اتحاد
let input: string | number;
متغیری را نشان می دهد که می تواند یکی از چندین نوع باشد.
تقاطع
type Admin = { role: string };
type User = { name: string };
type AdminUser = Admin & User;
انواع مختلفی را در یک ترکیب می کند.
نگهبانان
function printId(id: string | number) {
if (typeof id === 'string') {
console.log(id.toUpperCase());
} else {
console.log(id.toFixed(2));
}
}
نگهبانان نوع شبکه ایمنی در زمان اجرا هستند. آنها به انواع باریک TypeScript به صورت پویا کمک می کنند.
رابط در مقابل نام مستعار
استفاده کردن interface
هنگام گسترش اشکال. رابط ها برای ساختارهای شیء عالی هستند.
استفاده کردن type
هنگام آهنگسازی انواع ، اتحادیه ها یا الگوی الگوی.
interface Animal {
name: string;
}
type Dog = Animal & { bark: () => void };
ژن
Generics راهی برای نوشتن توابع و انواع قابل استفاده مجدد و قابل استفاده مجدد ارائه می دهد که هنوز هم تایپ قوی را اجرا می کنند.
function identity<T>(value: T): T {
return value;
}
-
T
یک متغیر نوع است این عملکرد را برای هر نوع قابل استفاده مجدد می کند. - به طور گسترده در توابع ابزار ، کتابخانه ها و مؤلفه ها استفاده می شود.
انواع ابزارهای داخلی
-
Partial
– تمام خواصT
اختیاری شوید مفید برایupdate
عملیات -
Readonly
– جلوگیری از اصلاحT
خصوصیات -
Pick
– زیر مجموعه ای ازT
خصوصیات -
Omit
– برخی از خواص را از آن خارج کنیدT
بشر -
Record
– نوعی با کلیدها ایجاد می کندK
و مقادیر نوعT
بشر
نمونه
type User = { id: number; name: string; email: string };
type Preview = Pick<User, "id" | "name">;
Preview
نسخه سبک تر از User
فقط حاوی id
وت name
بشر
انواع مارک دار
انواع مارک دار یک امضای منحصر به فرد به انواع دیگر سازگار اضافه می کنند ، و در جلوگیری از مخلوط های تصادفی در هنگام اشتراک انواع مختلف ساختار یکسان ، کمک می کند.
type UserId = string & { readonly brand: unique symbol };
function createUserId(id: string): UserId {
return id as UserId;
}
یک “برند” را اضافه می کند تا انواع ساختاری اسمی شود. از مخلوط کردن تصادفی از انواع مشابه جلوگیری می کند.
اتحادیه های تبعیض آمیز
اتحادیه های تبعیض آمیز اجازه می دهند تا از نوع ایمن بر اساس یک خاصیت مشترک ، به طور معمول باریک شود kind
بشر
type Shape =
| { kind: 'circle'; radius: number }
| { kind: 'square'; side: number };
function area(shape: Shape) {
switch (shape.kind) {
case 'circle': return Math.PI * shape.radius ** 2;
case 'square': return shape.side ** 2;
}
}
هر نوع شکل توسط a متمایز می شود kind
میدان
انواع الگوی تحت اللفظی
انواع الگوی الگوی به شما امکان می دهد انواع رشته مانند را با استفاده از الگوهای ایجاد کنید.
type Route = `/${string}`;
از الگوهای رشته انواع ایجاد می کند. برای تطبیق مسیر یا محدودیت های رشته مفید است.
انواع مشروط و استنباط
انواع مشروط از نحو سه گانه برای بیان منطق نوع استفاده می کنند. همراه با infer
، می توانید اطلاعات را از انواع دیگر استخراج کنید.
type Return<T> = T extends (...args: any[]) => infer R ? R : never;
نوع بازگشت را استخراج می کند R
از یک تابع T
بشر
انواع Tuple Variadic
انواع Tuple Variadic با افزودن یا پخش عناصر به صورت پویا ، دستکاری در تاپل ها را امکان پذیر می کند. این برای آرگومان های عملکردی و الگوهای قابل استفاده مجدد Tuple قدرتمند است.
type AppendNumber<T extends unknown[]> = [...T, number];
اجازه می دهد تا گسترش پویا از Tuples. عالی برای تایپ لیست های آرگومان.
انواع بازگشتی
انواع بازگشتی خود را برای نشان دادن ساختارهای تو در تو در توجیه می کنند. آنها برای تایپ داده هایی مانند درختان یا داده های شبیه به JSON مهم هستند.
type Tree<T> = {
value: T;
children?: Tree<T>[];
};
به انواع اجازه می دهد تا خودشان را ارجاع دهند. برای نشان دادن ساختار داده های تو در تو مفید است.
پایان
TypeScript چیزی بیش از نوع ایمنی است. این در مورد بهبود تجربه توسعه دهنده ، نوشتن کد رسا و ایجاد برنامه های مقیاس پذیر است. هنگامی که فراتر از اصول اولیه هستید ، یک سیستم نوع ظریف را که قادر به مدل سازی رفتارها و محدودیت های پیچیده است ، کشف می کنید.
TypeScript یک ابزار جامع برای ایجاد کدی تمیز تر ، ایمن تر و باهوش تر از رمزگذاری منطق با انواع مشروط تا استنباط مقادیر بازگشت ارائه می دهد.
Mastering TypeScript سطوح جدیدی از کنترل و وضوح را در کد شما باز می کند ، خواه API ها را تعریف کنید ، ساختار داده ها را تغییر دهید ، یا ساختمانهای قدرتمند و قابل استفاده مجدد را ایجاد کنید.
جادو واقعی است و همه در انواع است.