Code Module | کد ماژول
1.91K subscribers
357 photos
42 videos
6 files
355 links
Hello World 🌎

<> Earth is programmable if you code it </>

Group 👇🏻
@CodeModuleGap

Contact Us 👇🏻
@MrShahiin
@neoMahan
Download Telegram
چرا باید تایپ‌اسکریپت و یاد بگیریم؟ 😀

یکی از جذاب‌ترین تکنولوژی‌هایی که وارد دنیای توسعه وب شده قطعا زبان برنامه ‌نویسی Typescript هست.

تایپ اسکریپت یک زبان برنامه نویسی مبتنی بر جاوا اسکریپته که توسط شرکت مایکروسافت توسعه یافته. تایپ اسکریپت به عنوان یک Superset برای جاوا اسکریپت در نظر گرفته میشه.
منظور از Superset بودن یک زبان برنامه نویسی اینه که مبتنی بر یک زبان برنامه نویسی دیگه هست و ویژگی‌های زیادی و به اون زبان اضافه میکنه.


اما جدای از این موارد تایپ اسکریپت چه ویژگی‌هایی داره که به ما ارائه کنه؟😀


🔢 فرایند یادگیری آسان

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


🔢 ترجمه به جاوا اسکریپت

تایپ اسکریپت قابلیت اجرا شدن به صورت مستقیم و نداره چرا که به کدهای صفر و یک تبدیل نمیشه. به جای این تایپ اسکریپت کدهاشو و به جاوا اسکریپت تبدیل می‌کنه و کدها را در نهایت اجرا می‌کنه. این مسئله باعث سازگاری بیشتر میشه و مهم نیست که شما از چه پلتفرم یا مرورگری استفاده میکنید.


🔢 شئ‌گرایی قدرتمند

تایپ اسکریپت یک زبان برنامه نویسی توانمند و بسیار قدرتمند در زمینه پارادایم شئ‌گرایی هست و تمام ویژگی‌های یک سیستم برنامه نویسی شئ‌گرا مانند جاوا و در اختیارتون قرار میده.


🔢 پشتیبانی از کتابخانه‌های مختلف

اکثر فریمورک‌های محبوب و پر استفاده جاوا اسکریپت مثل انگولار، ری‌اکت، ویو و اکسپرس و ... به خوبی از توانمندی‌های تایپ اسکریپت پشتیبانی میکنند.



یادگیری تایپ اسکریپت قطعا برای هر دولوپری لازمه و ویژگی جدیدی و به رزومه کاری‌تون اضافه می‌کنه که شما رو به یک توسعه دهنده کارآمدتر تبدیل خواهد کرد🔥



Document 😀

#typeScript
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
تایپ اسکریپت و مثل ماست یاد بگیر 🥶

این سایتی که بهتون معرفی میکنم کلی آموزش، چالش و نمونه سورس کد در زمینه تایپ اسکریپت داره و به راحتی، میتونید مهارتتون و تقویت کنید.

⚡️https://typehero.dev/


#typeScript
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
تایپ اسکریپت و با این کتاب یاد بگیر! 🥶

در پست های قبلی راجب اهمیت تایپ اسکریپت و ویژگی های کلیدیش صحبت کردیم. امروز میخوام کتابی بهتون معرفی کنم که به طور جامع، تایپ اسکریپت و توضیح و شرح میده💀

Download 🌐

#typescript
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
چرا به جای تایپ any از unknown استفاده کنیم؟ 🥶

همونطور که میدونید Any به معنای «هر چیزی» هست. پس بنابراین اگر این تایپ رو برای متغیری ست کنیم، یعنی این اجازه رو بهش دادیم که هر مقدار و داده ای رو بتونه قبول کنه. این تایپ، تمام ویژگی‌های تایپ اسکریپت از جمله بررسی تایپ، تکمیل خودکار و safety رو غیرفعال می‌کنه.

در مقابل تایپ unknown ، ورژن Type Safe تایپ any هست. یعنی با استفاده از unknown می‌تونیم با امنیت بیشتری نسبت به any کدنویسی کنیم. اما این امنیت یعنی چی و چرا باید unknown و به any ترجیح بدیم؟ 🤔


🔵 ایمنی بیشتر

تایپ any به تایپ‌چکر اجازه میده که به هر نوع داده ای بدون هیچ بررسی خاصی، دسترسی داشته باشه. این می‌تونه منجر به بروز خطاهایی در زمان اجرا بشه، زیرا تایپ‌چکر نمیتونه اطمینان حاصل کنه که عملیات‌های انجام شده بر روی متغیر ایمن هستن یا نه.

اما تایپ unknown تایپ‌چکر رو مجبور می‌کنه تا قبل از استفاده از داده، نوعش رو بررسی کنه. این باعث میشه که کد ایمن‌تر باشه و خطاهای کمتری در زمان اجرا رخ بده.


🔵 بهبود خوانایی و نگهداری کد

استفاده از تایپ unknown باعث میشه که کد شما مستند تر باشه. به دیگران و همچنین به خودتون نشون میده که قصد دارید نوع متغیر رو قبل از استفاده مشخص کنید. اما تایپ any این مفهوم رو نمیرسونه و میتونه به سوءتفاهم‌ها و خطاهایی منجر بشه.


به طور خلاصه، استفاده از تایپ unknown به جای any باعث افزایش ایمنی و خوانایی کد میشه، و از خطاهای احتمالی جلوگیری می‌کنه. به همین دلیل توصیه میشه که در مواقعی که نوع داده‌ای مشخص نیست، از تایپ unknown استفاده کنیم ⚡️

#typescript
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
تفاوت Type Alias و Interface در تایپ‌اسکریپت 🥶

تایپ Alias و اینترفیس شباهت‌های خیلی زیادی بهم دارن و تقریباً هر جایی می‌تونن بجای همدیگه استفاده بشن. اما یه سری تفاوت ها بینشون هست که تو این پست با هم بررسیشون میکنیم.

همونطور که می‌دونید، میتونیم تایپ های دلخواهمون رو با استفاده از Type Alias به شکل زیر تعریف میکنیم:

type Person = { 
name: string;
age: number;
}

اما اگه با اینترفیس‌های آشنایی داشته باشید، می‌دونید که تایپ بالا رو خیلی راحت می‌تونیم با یک اینترفیس هم بنویسیم:
interface Person { 
name: string;
age: number;
}


نحوهٔ استفاده از این اینترفیس هیچ تفاوتی با تایپی که ساختیم نداره و می‌تونه توی مثال بالا استفاده بشه. در واقع توی خیلی از جاها این دو ویژگی می‌تونن به همین شکل بجای همدیگه استفاده بشن.

پس چه تفاوت‌هایی وجود داره؟ 🤔

1⃣کار با مقادیر Primitive

این یکی از مهمترین تفاوت‌های این دو ویژگی هست. تو مثال‌های بالا دیدیم که ما تونستیم برای تایپ string یک تایپ با اسم دلخواه خودمون بسازیم. همونطور که می‌دونیم string یک Primitive (مقدار غیر آبجکتی) هست و ما برای کار با مقادیر Primitive نمی‌تونیم از اینترفیس‌ها استفاده کنیم. در واقع ما از اینترفیس‌ها فقط می‌تونیم برای شکل دادن به آبجکت‌ها استفاده کنیم. اما با Type Alias می‌تونیم هم برای مقادیر آبجکتی و هم Primitive ها تایپ دلخواه بسازیم:

interface Person { 
name: string;
}

// or
type Person {
person: string;
}

type Name = string;


2⃣‏Merge کردن اینترفیس‌ها و Type Aliases

یک تفاوت مهم دیگه (شاید مهمترین تفاوت) این دو ویژگی اینه که ما توی یک برنامه می‌تونیم چند اینترفیس با اسم‌های یکسان داشته باشیم. اما این کار برای تایپ‌ها شدنی نیست و ما خطا می‌گیریم:

interface Person { 
name: string;
}
interface Person {
age: number;
}
const john: Person = {
name: "John",
age: 3,
};

توی کد بالا دو اینترفیس اول با هم ترکیب (Merge) شدن و یک اینترفیس شامل پراپرتی‌های age و name رو تشکیل دادن. اما داشتن دو تایپ همنام توی برنامه شدنی نیست:
type Person = { 
name: string;
}
type Person = {
age: number;
}
// Error: Duplicate identifier 'Person'


برای اینکه پست زیادی طولانی نشه، ادامه تفاوت هارو توی این تلگراف نوشتم.


در نهایت، انتخاب بین این دو به نیازهای خاص پروژه شما بستگی داره و در بسیاری از موارد، می‌تونید از هر دو با هم استفاده کنید تا بهترین نتیجه رو بگیرید. اگر به تداخل یا گسترش نیاز دارید، از interface استفاده کنید. اما اگر نیاز به تعریف انواع پیچیده‌تری دارید یا میخواید از ترکیبات یونین یا تقاطع استفاده کنید، type alias مناسب‌تره.

#typescript
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
🥶 تفاوت تایپ‌های void و never در تایپ‌اسکریپت

تایپ های void و never، شاید در ظاهر شباهت‌های زیادی به هم داشته باشن، اما کاربرد کاملاً متفاوتی دارن که در این پست با هم بررسیشون می‌کنیم 😎

🔵 تایپ void چیه؟

اگه تابعی داریم که هیچ چیزی ریترن نمی‌کنه، برای نوع خروجی اون از تایپ void استفاده می‌کنیم. به عبارت دیگه، وقتی تابعی رو می‌بینیم که خروجی اون void هست، به این معنیه که اون تابع چیزی رو ریترن نمی‌کنه. مثل کد زیر :

function logMessage(message: string): void {
       console.log(message);
     }

    
🔵 تایپ never چیه؟

بعضی توابع ممکنه اصلاً به مرحلهٔ ریترن کردن هم نرسن. برای مثال به یک Error برخورد کنید و اصلا چیزی ریترن نشه. مثل کد زیر :

function throwError(message: string): never {
       throw new Error(message);
     }


⚡️تفاوت بین void و never چیه ؟

🔵با توجه به نتایجی که از تعاریف تایپ های void و never گرفتیم، تایپ void یک نوع بازگشتیه که به عنوان "هیچ چیز" در نظر گرفته میشه و عملکردی رو نشون میده، که هیچ مقداری رو بر نمیگردونه. این یعنی تابع یا متودی که بازگشتی از نوع void داره، فقط یک process خاصی رو انجام میده.

🔵در حالی که تایپ never در برخی زبان های برنامه نویسی که از تایپ اسکریپت پشتیبانی میکنن، برخوردار از قابلیت‌های ویژه‌تری هست. این تایپ رو معمولا برای توصیف عملکردی استفاده میکنن که هرگز به پایان نمیرسه. به عبارت دیگه، اگر یک تابع ریترنی از نوع never داشته باشه، به این معناست که اجرای اون تابع هرگز به خطای exception برنمیخوره، بلکه بیشتر به عنوان یک loop بی‌پایان یا توقف ناپذیر در نظر گرفته میشه.

در مجموع، تفاوت اصلی بین این دو تایپ اینه که void عملکردی رو نشون میده که هیچ مقداری رو بر نمیگردونه، در حالی که never توصیف یک عملکردیه که هیچگاه به پایان نمیرسه ✈️

#typescript #type #different
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
✌️JsDoc چیه و چه تفاوتی با Ts داره؟

JSDoc یک سیستم Documentation برای جاوا اسکریپت هست که روی استانداردتر و درست‌تر نوشتن کدهای جاوا اسکریپت، براساس یکسری از پترن ها تمرکز داره. این سیستم براساس کامنت‌هایی که در خود سینتکس وجود داره کار میکنه.

🔵در پست های قبلی درباره اینکه TypeScript چیه صحبت کردیم، پس اینجا خیلی توضیح خاصی بابتش نمیدم تا به اصل مطلب برسیم.

برتری های ‏JSDoc نسبت به TypeScript

◀️انعطاف‌پذیری و سازگاری

‏JSDoc یک زبان یا تکنولوژی جدا از جاوا اسکریپت نیست. در واقع JSDoc همون جاوا اسکریپته با این تفاوت که شما برای تعریف بخش‌های مختلف از سیستم کامنت‌نویسی استفاده میکنید، و از تکنولوژی جداگونه‌ای مثل تایپ اسکریپت استفاده نخواهید کرد.

◀️حاشیه نویسی یا Code Annotation

‏JSDoc تنها یک ابزار Type Checking نیست بلکه میتونه، برای تولید مستندات و تشریح چگونگی کارکرد بخش‌های مختلف کدهاتون ازش استفاده کنید. تمام این موارد باعث میشه تا فرایند درک و نگهداری از کدها ساده‌تر بشه.

◀️حذف زمان کامپایل

یکی از اصلی‌ترین مزایای JSDoc حذف کردن فرایند کامپایلینگ هست. مرورگر نمیتونه به طور مستقیم تایپ اسکریپت رو بخونه و نیاز به کامپایل شدن به جاوا اسکریپت رو داره، و این ممکنه زمان بر باشه، ولی JsDoc مستقیما از خود جاوااسکریپت خونده میشه و در نتیجه سرعت بهتری خواهیم داشت.

برتری های TypeScript نسبت به JSDoc

◀️سیستم Static Type قدرتمندتر

 تایپ اسکریپت یک مدل قدرتمند و جامع، از تایپ‌های مختلف رو ارائه میکنه و همچنین امکانات کاملی برای Error Handling رو تحویل ما میده. برخلاف JSDoc که سیستم تایپینگ اون در داخل کد جاوا اسکریپت تعریف میشه، تایپ اسکریپت به صورت مستقل عمل می‌کنه و از یک سیستم منحصر به فرد استفاده می‌کنه.

◀️وجود Type Interface

با وجود سیستم تعریف تایپ داده‌ای، تایپ اسکریپت خودش هم میتونه تایپ داده‌ای یک متغیر رو براساس مقدار انتسابی تعیین کنه. این موضوع در بعضی از موارد باعث میشه تا نیازی به تعریف صریح تایپ های داده‌ای نباشه، و کدبیس ساده‌تری داشته باشیم.

◀️کامیونیتی و سازگارپذیری

تایپ اسکریپت خودش رو به سرعت با نسخه‌های جدید جاوا اسکریپت تطبیق میده و همچنین، کامیونیتی قدرتمندتری به نسبت JSDoc در اختیار داره. این موضوع باعث میشه که نسبت به JSDoc کمی دلسرد بشیم.


در نهایت باید بگیم که JSDoc به صورت رسمی به عنوان یک رقیب برای تایپ اسکریپت معرفی نشده، اما توانایی اینو داره که در آینده نه چندان دور با تایپ اسکریپت رقابت کنه. پیشنهاد میکنم یه سر به داکیومنتش بزنید‌.

Document 🌐

#jsdoc #typescript #different
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
یک مرجع عالی برای تایپ اسکریپت 🥶

سایت Total TypeScript یک منبع آموزشی جامع برای یادگیری TypeScript هست که توسط Matt Pocock ایجاد شده. این سایت دوره‌های مختلف و محتوای آموزشی زیادی در مورد TypeScript ارائه میده، از جمله مباحث مقدماتی تا پیشرفته، بهترین شیوه‌های استفاده، نکات کلیدی برای بهینه‌سازی کدهای TypeScript و ...

از همه مهم تر یه قسمت جدید به سایت اضافه شده که یک کتابه ۱۶ چپتری هست، و از ابتدایی ترین مباحث تایپ اسکریپت شروع به آموزش میکنه. بهتون پیشنهاد میکنم حتما یک سر بزنید.

🔗 Link

#typescript
@CodeModule
🥶 چه آینده ای در انتظار Typescript هست ؟

🔵تایپ‌اسکریپت 5.8.2 آخرین نسخه رسمی که تا امروز (13 مارس 2025) منتشر شده، که در 27 فوریه 2025 اومده. این نسخه بیشتر روی بهبودهای کوچک و رفع مشکلات تمرکز داشته و چیز خیلی عجیب و غریبی توش نیست. طبق اعلام تیم تایپ‌اسکریپت توی وبلاگ رسمی‌شون، چندتا تغییر اصلی داشته:

بهبود type checking ها: مثلاً بررسی دقیق‌تر تایپ هایی که توی شرط‌ها برمی‌گردن یا وقتی به یه چیزی با ایندکس دسترسی پیدا می‌کنی.

پشتیبانی بهتر از ابزارهای ویرایشگر : مثل مرتب کردن importها بدون توجه به بزرگ یا کوچیک بودن حروف، که با بقیه ابزارها بهتر جور دربیاد.

رفع اشکالات: یه سری باگ‌های نسخه‌های آزمایشی رو درست کردن.

‼️این نسخه بیشتر یه به‌روزرسانی معمولی بود و برای اکثر برنامه‌نویس‌ها تغییر بزرگی توی کارشون ایجاد نکرد، مگر اینکه از یه سری ویژگی خاص استفاده می‌کردن که حالا دقیق‌تر شده.

⚡️حالا خبر بزرگ : تایپ‌اسکریپت 7.0 با زبان Go

حالا بریم سراغ چیزی که همه رو توی شبکه‌های اجتماعی و جاهای دیگه هیجان‌زده کرده. طبق پست‌هایی که توی X دیدم و یه اعلامیه که ظاهراً 11 مارس 2025 توی وبلاگ تایپ‌اسکریپت منتشر شده، تیم مایکروسافت داره روی یه نسخه کاملاً جدید کار می‌کنه که با زبان Go بازنویسی شده. یعنی کمپایلر تایپ‌اسکریپت که الان با خودش نوشته شده و به جاوااسکریپت تبدیل می‌شه، قراره به یه برنامه مستقل و سریع با Go تبدیل بشه.

👩‍💻چرا Go رو انتخاب کردن؟

🔵سرعت: توی پست‌های X گفته شده که تست‌های اولیه نشون می‌ده این نسخه تا 10 برابر سریع‌تر از نسخه الان کار می‌کنه. مثلاً توی پروژه‌های بزرگ مثل VS Code که از سرور تایپ‌اسکریپت (tsserver) زیاد استفاده می‌کنه، این سرعت می‌تونه کار رو خیلی راحت‌تر کنه.

🔵کارایی: Go یه زبان کامپایل‌شده‌ست و خیلی بهینه‌تر از جاوااسکریپت اجرا می‌شه، مخصوصاً برای کارای سنگین مثل بررسی نوع‌ها توی پروژه‌های بزرگ.

چیا قراره عوض بشه ؟

🔵پرفورمنس بهتر : اگه این 10 برابر سریع‌تر بودن واقعی باشه، برای پروژه‌های بزرگ که الان بررسی نوع‌هاشون گاهی چند ثانیه یا حتی چند دقیقه طول می‌کشه، یه تغییر بزرگه.

🔵سرور سریع‌تر: چون VS Code و خیلی از ویرایشگرها از tsserver برای تحلیل کد استفاده می‌کنن، این می‌تونه تجربه برنامه‌نویسی رو خیلی بهتر کنه.

هنوز معلوم نیست این تغییر به Go روی خود زبان (مثل دستورات یا ویژگی‌ها) اثر می‌ذاره یا فقط کمپایلر رو عوض می‌کنه 🏖️

#typescript #go #news
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM