تایپ‌اسکریپت

تایپ‌اسکریپت از صفر تا برنامه‌نویس

سیستمِ نوعِ ایستا را یاد بگیر؛ جایی که یک «tsc» واقعی، نوعِ اشتباه را مردود می‌کند.

۲۲۰درس
۱۸۶تمرین
۴۴ساعت
۹۴٪رضایت
مشاهده‌ی سرفصل‌ها
درباره‌ی دوره

چه چیزی یاد می‌گیری؟

تایپ‌اسکریپت از صفر تا برنامه‌نویس

تایپ‌اسکریپت همان جاوااسکریپت است، به‌اضافه‌ی چیزی که جاوااسکریپت ندارد: یک سیستمِ نوعِ ایستا که پیش از اجرا، خطاها را می‌گیرد. ستاره‌ی این دوره همین سیستمِ نوع است و ما آن را با یک کامپایلرِ واقعی (tsc) در حالتِ کاملاً سخت‌گیر (--strict) می‌سنجیم: اگر نوعی که می‌نویسی اشتباه باشد، کامپایل شکست می‌خورد و تمرین رد می‌شود. این یعنی نوع‌ها دیگر تزئین نیستند؛ خودِ نمره‌اند.

از یک شیبِ ورودیِ کوتاه شروع می‌کنیم (تایپ‌اسکریپت چه چیزی به جاوااسکریپت اضافه می‌کند، کامپایلر چطور فکر می‌کند، حاشیه‌نویسیِ نوع) و قدم‌به‌قدم تا برنامه‌نویسیِ سطحِ‌نوع بالا می‌رویم: جنریک‌ها، تایپ‌های شرطی و infer، تایپ‌های نگاشتی، و تایپ‌های قالب‌رشته‌ای. در کنارش، چون کد هنوز روی Node ۲۰ اجرا می‌شود، رفتارِ زمانِ‌اجرا و async نوع‌دار (Promiseهای نوع‌دار، async/await) را هم با خروجیِ واقعی می‌سنجیم.

چه یاد می‌گیری؟

  • حاشیه‌نویسیِ نوع، استنتاج، و طرزِ فکرِ کامپایلر
  • اینترفیس در برابر type، یونیون/اینترسکشن، literalها و as const/satisfies
  • باریک‌سازی (narrowing) و گاردهای نوع: typeof/in/instanceof، گاردِ is، و توابعِ asserts
  • یونیون‌های تفکیک‌شده و بررسیِ جامعیت با never
  • جنریک‌ها (توابع، اینترفیس‌ها، کلاس‌ها، قید، پیش‌فرض، استنتاج)
  • keyof/typeof/دسترسیِ اندیسی و تایپ‌های کاربردی (هم استفاده، هم بازنویسی از صفر)
  • تایپ‌های نگاشتی، تایپ‌های شرطی و infer، و تایپ‌های قالب‌رشته‌ای
  • unknown/any/never و ایمنیِ سخت‌گیرانه در برابرِ null
  • خطاهای نوع‌دار و الگوی Result، کلاس‌ها و شیءگراییِ تایپ‌اسکریپت، و async نوع‌دار

برای چه کسی؟

برای کسی که مبانیِ برنامه‌نویسی را بلد است و می‌خواهد نوعِ ایستا را جدی یاد بگیرد. دوره خودبسنده است اما روی جاوااسکریپت بنا شده؛ بهترین پیش‌نیاز، دوره‌ی جاوااسکریپتِ ما است. ما مبانیِ زمانِ‌اجرای جاوااسکریپت را دوباره از پایه درس نمی‌دهیم؛ تمرکز روی نوع‌ها است.

چرا این دوره؟

چون به‌جای حفظِ تئوری، نوعی که می‌نویسی را یک کامپایلرِ واقعی داوری می‌کند. حالتِ سخت‌گیر روشن است و ایمنیِ null خودش نمره دارد. تمرین‌ها دو گونه‌اند: زمانِ‌اجرا (خروجیِ Node سنجیده می‌شود) و سطحِ‌نوع (با Expect<Equal<…>> و @ts-expect-error؛ نوعِ غلط باعثِ خطای tsc و رد شدن می‌شود). دو پروژه‌ی پایانی هم داری: یک پروژه‌ی کنسولیِ نوع‌دار و یک «باشگاهِ نوع» به‌سبکِ چالش‌های نوع.

این زبانِ هسته است؛ DOM و APIهای مرورگر، ابزارهای ساخت/باندلر، و فریم‌ورک‌ها (مثلِ React) خارج از محدوده‌اند.

۲۴ سرفصل ساخت‌یافته
۱۸۶ تمرین عملی
اجرا و بازخورد آنی در مرورگر
گواهی پایان دوره
ساخته‌ی تیم آموزشی دینا کد

این دوره را تیم آموزشی دینا کد طراحی کرده — با تمرکز بر «یادگیری با انجام‌دادن»: هر مفهوم با تمرین عملی و داوری خودکار که کدت را همان لحظه می‌سنجد، و سرفصل‌هایی که بر پایه‌ی مسیر واقعی یک برنامه‌نویس چیده شده‌اند.

سرفصل‌ها

سرفصل‌های دوره

۲۴ سرفصل · ۲۲۰ درس · ۱۸۶ تمرین

۱

چرا نوع‌ها؟ تایپ‌اسکریپت، کامپایلر و طرزِ فکرِ آن

۷ درس
  • تایپ‌اسکریپت یعنی جاوااسکریپت + یک لایه‌ی نوعِ پاک‌شدنیپیش‌نمایش رایگان
  • تورِ کدِ آماده: یک برنامه‌ی نوع‌دار که اجرا می‌شودپیش‌نمایش رایگانتمرین
  • خطِ قرمز یعنی بیلدِ شکست‌خورده: حاشیه‌نویسیِ گم‌شده را اضافه کنپیش‌نمایش رایگانتمرین
  • نوع‌ها زمانِ اجرا پاک می‌شوند: نوع راهنماست، نه کدِ اجراییپیش‌نمایش رایگانتمرین
  • کامپایلر یک باگ را گرفت: نمایشِ ts-expect-errorپیش‌نمایش رایگانتمرین
  • استنتاج، پیش‌فرضِ تایپ‌اسکریپت — و اولین تستِ سطحِ‌نوعپیش‌نمایش رایگانتمرین
  • تایپِ ساختاری و جمع‌بندی: دو مدلِ داوری و راهِ پیشِ‌روپیش‌نمایش رایگان
۲

حاشیه‌نویسیِ نوع و نوع‌های روزمره

۹ درس
  • «: نوع» چیست؟ حاشیه‌نویسی، استنتاج و نوع‌های پایهپیش‌نمایش رایگان
  • حاشیه‌نویسیِ متغیرها و نوع‌های اولیهپیش‌نمایش رایگانتمرین
  • پارامترها و نوعِ خروجی و voidپیش‌نمایش رایگانتمرین
  • آرایه‌ها: T[] در برابرِ Array<T>پیش‌نمایش رایگانتمرین
  • تاپل‌های پایه: [string, number]پیش‌نمایش رایگانتمرین
  • null و undefined زیرِ strictNullChecksتمرین
  • چرا any سوراخ است و unknown مرزِ امنتمرین
  • گشاد شدنِ نوع: const در برابرِ let (سطحِ‌نوع)تمرین
  • گردشِ کدِ آماده: as، علامتِ ! و دام‌های خروجیِ کنسولتمرین
۳

اشیاء، اینترفیس‌ها در برابرِ type-aliasها

۹ درس
  • سه راه برای نام‌گذاریِ شِیپِ یک شیء
  • اولین interface: ساختنِ یک شیءِ نوع‌دارتمرین
  • فیلدهای اختیاری ? و اشیاء تودرتوتمرین
  • readonly: فیلدهایی که نمی‌شود تغییرشان دادتمرین
  • بررسیِ ویژگیِ اضافی: literalِ تازه در برابرِ متغیرتمرین
  • امضای اندیسی [k: string]: Tتمرین
  • interface extends و ادغامِ اعلان (declaration merging)تمرین
  • extends در برابرِ & و تصادمِ اعضا با neverتمرین
  • نمایش: ماتریسِ تصمیمِ interface در برابرِ typeتمرین
۴

یونیون‌ها، اینترسکشن‌ها، literalها و as const / satisfies

۹ درس
  • ترکیبِ نوع‌ها: یونیون «یا» و اینترسکشن «و»
  • نوعِ یونیون به‌عنوانِ پارامترتمرین
  • نوع‌های literal و دامِ «پهن‌شدن»تمرین
  • یونیونِ literal: ساختنِ یک دامنه‌ی محدودتمرین
  • نوعِ اینترسکشن: کنارِ هم گذاشتنِ شکل‌هاتمرین
  • as const: قفل‌کردن به readonly و literalِ دقیقتمرین
  • از as const تا یونیون: typeof arr[number]تمرین
  • satisfies: اعتبارسنجی بدونِ پهن‌شدنتمرین
  • نمایش: یک پیکربندیِ نوع‌دار با literal، as const و satisfiesتمرین
۵

enum در برابرِ یونیونِ literal

۶ درس
  • enum چیست و چرا وجود دارد؟
  • enumِ عددی و نگاشتِ معکوستمرین
  • enumِ رشته‌ای: یک‌طرفه و نامی‌گونهتمرین
  • const enum: هست، ولی اینجا نه
  • ایده‌ی مدرن: یونیونِ literal از as constتمرین
  • تورِ کد: enum در برابرِ یونیونِ literalتمرین
۶

★ توابع به‌صورتِ عمیق: overload، this و پارامترهای rest

۹ درس
  • نقشه‌ی توابعِ نوع‌دار: از پارامتر تا امضای تابع
  • پارامترِ اختیاری و پیش‌فرض: ?? نه ||تمرین
  • پارامترهای rest و تاپل‌های variadic: [string, ...number[]]تمرین
  • تاپل‌های readonly و برچسب‌دار: [name:string, age:number]تمرین
  • نوعِ تابع و امضای فراخوانی؛ construct signature به‌صورتِ سبکتمرین
  • تایپِ this: پارامترِ جعلیِ پاک‌شونده و دامِ از-دست-رفتنِ thisتمرین
  • Overload: امضاهای دیده‌شده، پیاده‌سازیِ پنهان و ترتیبِ خاص-به-عامتمرین
  • تایپِ contextual و callbackها: چرا callbackِ مستقل باید نوع بگیردتمرین
  • نمایش: bivariance، contravariance و یک کیتِ توابعِ نوع‌دارِ آمادهتمرین
۷

★ باریک‌سازی، تحلیلِ جریانِ کنترل و گاردهای نوع

۱۱ درس
  • باریک‌سازی و تحلیلِ جریانِ کنترل: بزرگ‌ترین چیزی که جاوااسکریپت ندارد
  • گاردهای typeof و دامِ typeof null === 'object'تمرین
  • باریک‌سازیِ صدق/کذب و عملگرهای ‎??‎ و ‎||‎ و ‎&&تمرین
  • باریک‌سازی با تساوی، switch و دامِ ‎!= nullتمرین
  • باریک‌سازی با عملگرِ inتمرین
  • باریک‌سازی با instanceof برای کلاس‌هاتمرین
  • تحلیلِ جریانِ کنترل: باریک‌سازی با انتساب، ریست و دامِ کال‌بکتمرین
  • گاردهای نوعِ کاربرساخته: x is Fishتمرین
  • توابعِ asserts: ادعا کن، سپس بدونِ ترس استفاده کنتمرین
  • پیش‌بینِ نوع در ‎.filter و یک نگاه به never در شاخه‌ی غیرقابلِ‌رسیدنتمرین
  • گردشِ کد: یک پارسرِ ورودیِ امن با همه‌ی گاردهاتمرین
۸

★ یونیون‌های تفکیک‌شده و جامعیت با never

۹ درس
  • تگِ تشخیص: چرا یونیونِ تفکیک‌شده الگوی شاخصِ تایپ‌اسکریپت است
  • ماشین‌حسابِ مساحت: یونیونِ سه‌حالته و switch روی تگتمرین
  • جامعیت با never: فراموش‌کردنِ یک حالت یعنی خطای کامپایلتمرین
  • باریک‌سازیِ درون‌شاخه: فیلدهای مخصوصِ هر حالتتمرین
  • reducer به سبکِ ردکس: حالت را با یونیونِ Action بِرانتمرین
  • ماشینِ حالت: گذارهای مجاز و افزودنِ حالتِ جدید که بیلد را می‌شکندتمرین
  • Result به‌عنوانِ یونیونِ تفکیک‌شده: باریک‌سازی روی okتمرین
  • افزودنِ حالت بیلد را می‌شکند — اثباتِ سطحِ‌نوعتمرین
  • گردشِ کدِ آماده: یک ماشینِ سفارش با DU، reducer، Result و جامعیتتمرین
۹

★ جنریک‌ها (۱): توابع، قید، استنتاج و پیش‌فرض

۱۱ درس
  • چرا جنریک؟ از any تا یک پارامترِ نوع
  • تابعِ identity جنریک و استنتاجِ خودکارتمرین
  • identity در زمانِ اجرا: همان مقدار، نوعِ سالمتمرین
  • چند پارامترِ نوع: رابطه‌ی ورودی‌ها و خروجی با pairتمرین
  • قانونِ طلایی: پارامترِ نوع باید دست‌کم دو بار ظاهر شودتمرین
  • قید با extends: محدودکردنِ T به شکلِ مورد نیازتمرین
  • قیدِ keyof: گرفتنِ یک ویژگی به‌صورتِ نوع‌دار با propتمرین
  • پارامترِ نوعِ پیش‌فرض با =تمرین
  • نگه‌داشتنِ دقتِ literal: const type parameter <const T>تمرین
  • مهارِ استنتاج با NoInferتمرین
  • نمایش: یک جعبه‌ابزارِ جنریکِ کاملتمرین
۱۰

★ جنریک‌ها (۲): اینترفیس‌ها، کلاس‌ها و ساختارهای داده‌ی نوع‌دار

۹ درس
  • از تابعِ جنریک تا ظرفِ جنریک: چرا اینترفیس و کلاس هم پارامتر نوع می‌گیرند
  • اینترفیسِ جنریک Box<T> و پیش‌فرضِ پارامترِ نوعتمرین
  • کلاسِ جنریک Box<T> و متدِ جنریک map<U>تمرین
  • Pair<A,B>: دو پارامترِ نوعِ مستقلتمرین
  • Stack<T> نوع‌دار و دامِ strictNullChecks در popتمرین
  • قید روی پارامترِ نوع و قیدی که به پارامترِ قبلی اشاره می‌کندتمرین
  • Repo<T extends {id:number}> با به‌روزرسانیِ Partial<T>تمرین
  • KVCache<K,V>: حافظه‌ی نهانِ نوع‌دار با دو پارامترِ کلید و مقدارتمرین
  • تورِ کدِ آماده: کتابخانه‌ی کوچکِ ساختارهای داده‌ی نوع‌دارتمرین
۱۱

★ keyof، typeof و دسترسیِ اندیسی

۱۱ درس
  • بازتاب روی نوع‌ها: keyof، typeof و دسترسیِ اندیسی چه‌اند؟
  • keyof: کلیدهای یک شِیپ را به یونیون تبدیل کنتمرین
  • typeof در جایگاهِ نوع: نوعِ یک مقدار را بگیرتمرین
  • keyof typeof: کلیدهای یک آبجکتِ ثابت را مشتق کن (RouteName)تمرین
  • keyof typeof enum: نام‌های اعضای یک enum را بگیرتمرین
  • دسترسیِ اندیسی روی اشیاء: T['a'] و T[K]تمرین
  • دسترسیِ اندیسی روی آرایه و تاپل: T[number] و T[0]تمرین
  • دسترسیِ اندیسیِ زنجیره‌ای: تو در توها را بپیماتمرین
  • همراهِ زمانِ‌اجرا: getProp جنریکِ امن با keyof و T[K]تمرین
  • Index signature در برابرِ Record و درباره‌ی noUncheckedIndexedAccess
  • نمایش: مشتقِ کاملِ یک نوع از یک پیکربندیِ ثابتتمرین
۱۲

★ تایپ‌های کاربردی: استفاده و بازنویسی از صفر

۱۱ درس
  • کتابخانه‌ی استانداردِ نوع‌ها: نقشه‌ی راه و دو پاسِ این ماژول
  • ترانسفورمرهای شیء در عمل: Partial و Required و Readonlyتمرین
  • Pick و Omit و Record: برش، حذف و ساختِ نگاشتتمرین
  • عملگرهای مجموعه روی یونیون: Exclude، Extract و NonNullableتمرین
  • استخراج از امضای توابع و کلاس‌ها: ReturnType، Parameters، ConstructorParameters، InstanceTypeتمرین
  • Awaited و رشته‌سازهای نوع: باز کردنِ Promise و دستکاریِ رشته در سطحِ نوعتمرین
  • بازنویسی از صفر (۱): MyPartial، MyRequired و MyReadonly با تایپِ نگاشتیتمرین
  • بازنویسی از صفر (۲): MyExclude، MyExtract و MyNonNullable با شرطیِ توزیع‌شوندهتمرین
  • بازنویسی از صفر (۳): MyPick، MyOmit و MyRecord (ترکیبِ نگاشتی + مجموعه‌ای)تمرین
  • بازنویسی از صفر (۴): MyReturnType، MyParameters و MyAwaited با inferتمرین
  • نمایشِ کدِ آماده: ساختِ شیءِ نوع‌دار با تایپ‌های کاربردیتمرین
۱۳

★ تایپ‌های نگاشتی (mapped types)

۹ درس
  • نگاشت روی کلیدها: ایده‌ی پشتِ mapped types
  • اولین نگاشت: کلونِ یک نوع و Stringifyتمرین
  • افزودنِ modifier: بازسازیِ Partial و Readonly از صفرتمرین
  • حذفِ modifier با - : ساختِ Concrete با -readonly و -?تمرین
  • تبدیلِ مقدار: Nullable و بسته‌بندیِ مقادیر در تابعتمرین
  • نگاشت روی یونیونِ کلیدها: بازسازیِ Record و Pickتمرین
  • بازنگاشتِ کلید با as: ساختِ Getters با قالب‌رشته‌ایتمرین
  • فیلترکردنِ کلیدها با as ... never: ساختِ OmitByTypeتمرین
  • گردشِ کدِ آماده: یک ابزارِ نگاشتیِ کاملتمرین
۱۴

★ تایپ‌های شرطی و infer

۱۱ درس
  • شاخه‌زدن در سطحِ نوع: T extends U ? X : Y
  • اولین شرطی: IsString و یک switch سطح‌نوعیتمرین
  • infer: بیرون‌کشیدنِ نوعِ عضوِ آرایهتمرین
  • infer روی تاپل: Head و Tailتمرین
  • infer روی توابع: ReturnType و Parameters از صفرتمرین
  • infer با قید و infer در چند جایگاهتمرین
  • شرطی‌های توزیعی: وقتی روی هر عضوِ یونیون پخش می‌شوند
  • توزیعی در برابرِ غیرتوزیعی و لبه‌ی neverتمرین
  • بازسازیِ Exclude و Extract و Awaitedتمرین
  • شرطیِ بازگشتی: DeepReadonly و Flattenتمرین
  • تورِ کدِ آماده: یک کیتِ کوچکِ سطح‌نوعی با شرطی و inferتمرین
۱۵

★ تایپ‌های قالب‌رشته‌ای (template-literal types)

۹ درس
  • قالبِ رشته در سطحِ نوع: درج، ضربِ یونیون و دستکاری‌های درون‌ساز
  • ساختِ نام: Greeting و درجِ نوعِ جنریکتمرین
  • ضربِ یونیون‌ها و دستکاری‌های درون‌ساز: ساختِ نامِ رویدادتمرین
  • الگوهای placeholder: ${number}/${string} و StartsWith با تطبیقِ قالبتمرین
  • استنتاج با infer داخلِ قالب: Split بازگشتیتمرین
  • Replace و ReplaceAll: جای‌گذاری در سطحِ نوعتمرین
  • ★ تجزیه‌ی مسیرِ روت: RouteParamsتمرین
  • ترکیب با تایپِ نگاشتی: snake_case و Getters از کلیدهاتمرین
  • نمایش: درازای رشته و ParseInt در سطحِ نوع (چرا داوری نمی‌کنیم)تمرین
۱۶

★ unknown، any، never و ایمنیِ سخت‌گیرانه در برابرِ null

۱۱ درس
  • سه نوعِ ویژه و شبکه‌ی انتساب: never، unknown و any
  • any سوراخ است، unknown دیوار: تفاوتِ گرفته‌شده با tscتمرین
  • unknown را پیش از استفاده باریک کنتمرین
  • مرزِ داده‌ی بیرونی: JSON.parse، any و مهارِ آن با unknownتمرین
  • catch (e) از نوعِ unknown است: با instanceof Error مهارش کنتمرین
  • strictNullChecks: null را پیش از استفاده حذف کنتمرین
  • تله‌ی کلاسیک: ?? در برابرِ || (دامِ ۰ و رشته‌ی خالی)تمرین
  • ?. کوتاه‌بست می‌کند و Array#find ممکن است undefined بدهدتمرین
  • never نوعِ تهِ خالی: جامعیت، Exclude و اشتراکِ ناممکنتمرین
  • جامعیت با never: شاخه‌ی فراموش‌شده را کامپایلر می‌گیردتمرین
  • دروغ به کامپایلر: ! غیرنال و ! انتسابِ قطعی (پلی به ماژولِ بعد)
۱۷

خطاهای نوع‌دار و نوعِ Result

۸ درس
  • مدلِ خطا در تایپ‌اسکریپت: throw نوع ندارد، catch هم unknown است
  • مرزِ امنِ catch: باریک‌سازیِ e از نوعِ unknownتمرین
  • کلاس‌های خطای سفارشی و گاردِ isAppErrorتمرین
  • نوعِ Result: یونیونِ تفکیک‌شده به‌جای پرتابتمرین
  • کمک‌کننده‌های Result: unwrapOr، map و chainتمرین
  • اثباتِ سطحِ‌نوعِ ok و err و جامعیتِ مدیریتِ Result با neverتمرین
  • اعتبارسنجیِ نوع‌دار: بازگرداندنِ Result با نقشه‌ی خطای فیلد‌به‌فیلدتمرین
  • کدِ آماده: خطِ لوله‌ی امنِ تجزیه با Result از مرزِ unknown تا خروجیتمرین
۱۸

★ کلاس‌ها و شیءگراییِ تایپ‌اسکریپت

۱۱ درس
  • کلاس در تایپ‌اسکریپت: نوع‌ها روی شیءگرایی
  • فیلدهای نوع‌دار، initializer و getterِ نوع‌دارتمرین
  • حسابِ بانکی: private و readonly با گاردِ نوعتمرین
  • parameter property: سازنده‌ی کوتاه‌شدهتمرین
  • implements: قراردادِ اینترفیس روی کلاستمرین
  • extends، super و protectedتمرین
  • کلاس‌های abstract و عضوِ abstractتمرین
  • کلاسِ جنریک: Box<T> و متدِ mapتمرین
  • this چندریختی و اعضای static: سازنده‌ی زنجیره‌ایتمرین
  • آغازسازیِ سخت‌گیرانه‌ی فیلد، ! قطعی، override و خداحافظی با decorator
  • تورِ کدِ آماده: کیف‌پولِ نوع‌دار از نگاهِ بالاتمرین
۱۹

async نوع‌دار: Promiseها، async/await و Awaited

۹ درس
  • Promise<T> یعنی چه؟ مدلِ ذهنیِ async نوع‌دار
  • نوعِ بازگشتیِ تابعِ async و باز کردن با awaitتمرین
  • Awaited<T>: باز کردنِ Promiseهای تو‌در‌تو در سطحِ نوعتمرین
  • Promise.all نوع‌دار: استنتاجِ tuple و ترتیبِ قطعیتمرین
  • allSettled و race: نوعِ نتیجه‌هاتمرین
  • خطای async نوع‌دار: try/catch با e: unknownتمرین
  • safeAsync نوع‌دار: پیچیدنِ async در یک Resultتمرین
  • دونده‌ی ترتیبیِ async: await درونِ حلقه با ترتیبِ قطعیتمرین
  • تورِ کدِ آماده: خطِ لوله‌ی دادهٔ async نوع‌دارتمرین
۲۰

ماژول‌ها، import type و namespace (مفهومی + اجرا با namespace)

۶ درس
  • ماژول چیست؟ از import/export تا re-export
  • import type و export type: جدا کردنِ نوع‌ها از مقدارها
  • تشخیصِ ماژول و تعاملِ CommonJS با ESM
  • namespace: ساختار دادن در یک فایل (تور آماده)تمرین
  • namespace بساز و اعضایش را صدا بزنتمرین
  • تفکیکِ model و service در یک فایل با namespaceتمرین
۲۱

سخت‌گیری و tsconfig (مفهومی)

۶ درس
  • tsconfig چیست و چرا اینجا نمی‌فرستیمش؟
  • پرچمِ strict دقیقاً چه چیزهایی را روشن می‌کند؟
  • تورِ کدِ آماده: noImplicitAny واقعاً شلیک می‌کندتمرین
  • تورِ کدِ آماده: strictNullChecks جلوی null را می‌گیردتمرین
  • پرچم‌های اختیاری اما مهم (و target/lib/module)
  • تورِ کدِ آماده: قراردادِ سخت‌گیریِ این دوره از نگاهِ بالاتمرین
۲۲

اصطلاحات و دام‌ها: any-خزی، as ناامن، تایپِ ساختاری

۹ درس
  • طرزِ فکرِ اصطلاحی: به کامپایلر دروغ نگو
  • any-خزی در برابرِ unknownِ امن در مرزتمرین
  • asِ دروغگو و !‌ِ غیرتهی: چرا خطرناک‌اندتمرین
  • استنتاج، as const و یونیونِ literal به‌جای حاشیه‌نویسی و enumتمرین
  • غافلگیریِ تایپِ ساختاری: ویژگیِ اضافه فقط روی literalِ تازهتمرین
  • باریک‌سازیِ گم‌شده، Object.keys و T|undefinedتمرین
  • readonlyِ کم‌عمق و آرایه‌های readonlyتمرین
  • تایپِ برندشده (nominal) و فضای‌نامِ نوع در برابرِ مقدارتمرین
  • تورِ کد: دامِ ناامن در برابرِ اصطلاحِ امنتمرین
۲۳

★ پروژه‌ی پایانیِ زمانِ‌اجرا: ردیابِ وظایفِ نوع‌دار

۸ درس
  • نقشه‌ی پروژه: ردیابِ وظایف چه شکلی است و چطور می‌سنجیمش
  • گام ۱ — مدلِ داده: Taskِ تفکیک‌شده و نوعِ Resultتمرین
  • گام ۲ — مخزنِ جنریک: Repo<T extends {id:number}>تمرین
  • گام ۳ — تجزیه‌گرِ فرمان با باریک‌سازیتمرین
  • گام ۴ — کاهنده‌ی (reducer) تفکیک‌شده با جامعیتِ neverتمرین
  • گام ۵ — ذخیره‌سازِ asyncِ نوع‌دار و قطعیتمرین
  • گام ۶ — اتصالِ همه: حلقه‌ی فرمان و حالتِ نهاییتمرین
  • تورِ کدِ آماده: ردیابِ وظایفِ کامل از آغاز تا پایانتمرین
۲۴

★ پروژه‌ی پایانیِ سطحِ‌نوع: باشگاهِ نوع

۱۲ درس
  • قوانینِ باشگاه: Equal، Expect و چرا استارتر باید بشکند
  • پله ۱ — توابعِ تاپل: First، Last و Lengthتمرین
  • پله ۲ — دستکاریِ تاپل: Concat، Push، Pop و Reverseتمرین
  • پله ۳ — یونیون و تاپل: TupleToUnion و Includesتمرین
  • پله ۴ — تایپ‌های متا: If، And، Or، Not و ساختِ خودِ Equalتمرین
  • پله ۵ — تبدیل‌های عمیق: DeepReadonly و DeepPartialتمرین
  • پله ۶ — ترکیبِ شکل‌ها: Merge و PartialByKeysتمرین
  • پله ۷ — باشگاهِ رشته: Trim، Replace و Splitتمرین
  • پله ۸ — تجزیه‌ی URL: ParseQueryString و RouteParamsتمرین
  • پله ۹ — مسیرِ نوع‌دار: PathValue در سطحِ نوع + get در زمانِ اجراتمرین
  • پله ۱۰ — ماشین‌آلاتِ مرتبه‌بالا: UnionToIntersection و Chainableتمرین
  • غولِ آخر و تورِ پایانی: کتابخانه‌ی استاندارد، بازساخته از صفرتمرین

همین حالا شروع کن

اولین خط کدت را همین امروز در «تایپ‌اسکریپت از صفر تا برنامه‌نویس» بنویس. شروع رایگان است و در کمتر از دو دقیقه وارد محیط یادگیری می‌شوی.

تایپ‌اسکریپت از صفر تا برنامه‌نویس — دینا کد