🙅 چرا نفرت از TypeScript در سال 2024 منطقی نیست

Summarize this content to 400 words in Persian Lang
من اخیراً این روند را می بینم: توسعه دهندگان بیشتر و بیشتری از TypeScript سرکوب می کنند. این مشکلات از “بیش از حد پیچیده” تا “آهسته شدن توسعه” متغیر است.
در حالی که همه نگرانی ها بی اساس نیستند، نفرت در TypeScript در سال 2024 فقط زیاد نیست.
بیایید آن را تجزیه کنیم. 🔍
TypeScript دشمن شما نیست، شبکه ایمنی شماست
متوجه شدم – جاوا اسکریپت انعطاف پذیر، پویا است و به شما امکان می دهد کد را سریع ارسال کنید. اما همین انعطافپذیری نیز منجر به اشکالاتی میشود که تا دیر نشده به سختی میتوان آنها را گرفت. سختگیری TypeScript برای کاهش سرعت شما وجود ندارد. آنجاست تا شما را از خرج کردن نجات دهد مشکلات رفع اشکال ساعت که می توانست زود دستگیر شود.
در اینجا یک مثال است:
let id;
getUserByID(id);
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
در تئوری، id می تواند یک عدد، یک UUID، یک رشته تصادفی یا یک رشته ساخت یافته باشد. اما بسته به نوع آن، اگر بخواهید آن را افزایش دهید یا آن را به API ارسال کنید که انتظار دارد ساختار و نوع خاصی داشته باشد، ممکن است با خطا مواجه شوید.
و با نگاه کردن به نحوه استفاده می توانید نوع آن را بفهمید. اما می دانید چه چیزی باعث می شود این a غیر موضوعی?
let id: number;
function getUserByID(id: string) {…}
// and that’s the most basic thing you could do
getUserByID(id); // boink, error!
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
وقتی TypeScript را به پروژه خود اضافه می کنید، یک لایه امنیتی اضافه می کنید. مثل بستن کمربند ایمنی است. مطمئناً، میتوانید بدون آن رانندگی کنید، اما وقتی یک اقدام احتیاطی ساده میتواند شما را از تصادف نجات دهد، چرا ریسک کنید؟ 🚗💥 در زمانی که کیفیت نرمافزار مهمتر از همیشه است، بررسی نوع تایپ اسکریپت محافظی است که منطقی به نظر میرسد.
آنقدرها هم که فکر می کنید پیچیده نیست
شکایت دیگری که اغلب میشنوم این است که TypeScript “بیش از حد پیچیده” است. اما بیایید واقعی باشیم – جاوا اسکریپت می تواند یک آشفتگی باشد. امضاهای تابعی که هر ورودی را می پذیرند، اشیایی که شکل آنها را تغییر می دهند، و کدهایی که یک اشتباه تایپی از شکسته شدن در تولید فاصله دارند. TypeScript پیچیدگی اضافه نمی کند. آن را رسمی یا استاندارد می کند.
اینگونه درباره اش فکر کن:
شما روی قسمت جلویی یک ویژگی کار می کنید و ممکن است شخص دیگری با شما همپوشانی داشته باشد. همچنین APIهای Backendی وجود خواهند داشت که باید آنها را با هم ترکیب کنید، اما هنوز آماده نیستند. به هر حال از شما خواسته شده است که کار رابط کاربری را شروع کنید.
چگونه مطمئن می شوید که کدی که در حال حاضر می نویسید با داده هایی که از API ها دریافت می کنید مطابقت دارد؟ و اینکه اگر چیزی در API ها تغییر کند، منبعی از حقیقت وجود دارد که همه طرف ها باید به آن پایبند باشند؟
درست است.با تعریف انواع.
با انواعی که قبل از شروع پیادهسازی تعریف شدهاند، نباید سردرگمی در مورد قراردادهای دادهای که بین UI و API به اشتراک گذاشته میشوند وجود داشته باشد، و اگر چیزی واقعاً متفاوت است، تمام کاری که باید انجام شود این است که به قراردادهایی که قبلاً تعریف شدهاند پایبند باشید.
اگر میتوانید React را یاد بگیرید، با Webpack بحث کنید یا با async/await مقابله کنید، میتوانید TypeScript را یاد بگیرید. و در اینجا ضربه زننده است – این یک مهارت است سود سهام پرداخت می کند. منحنی یادگیری ارزشش را دارد زیرا شما را وادار می کند تا در مورد کد خود انتقادی تر فکر کنید. به جای هک کردن یک راه حل سریع، به معماری، انواع و قابلیت نگهداری طولانی مدت فکر می کنید. 🛠️
توسعه سریعتر، نه آهسته تر
این افسانه وجود دارد که TypeScript توسعه را کند می کند. اما در واقعیت، اغلب برعکس است. با گرفتن خطاها در زمان کامپایل به جای زمان اجرا، TypeScript به شما کمک می کند در دراز مدت سریعتر حرکت کنید. شما روزهای خود را در کنسول مرورگر نمی گذرانید، به دنبال متغیرهای تعریف نشده یا اجبارهای نوع عجیب و غریب هستید. 🚀
ابزار TypeScript نیز درجه یک است.ویژگیهایی مانند تکمیل خودکار، ابزارهای refactoring، و مستندات درون خطی، تجربه توسعه را روانتر میکنند. شما فقط کد نمینویسید، بلکه بهجای اینکه در تاریکی سرگردان شوید، در جادهای با نور و علامتگذاری خوب پیمایش میکنید. 🌟
اینجا یک حکایت شخصی.قبل از اینکه به طور کامل تایپ اسکریپت را بپذیرم، اغلب خودم را در علف های هرز باستان شناسی پایگاه کد می دیدم. من با یک تابع مواجه میشوم و نمیدانم چه آرگومانهایی قرار است داشته باشد. رشته ای بود؟ یک شی؟ چه پارامترهایی در این شی مورد نیاز بود؟ کدام یک اختیاری بود؟ آیا چیزی که برای ظاهر اختیاری ساخته شده بود در واقع در جایی از callstack مورد نیاز بود؟
زیرا توسعه دهندگان کامل نیستند، نامهای ضعیف متغیرها، قراردادهای نامگذاری ناسازگار، و اولویتهای کدنویسی همیشه در راه هستند…
بنابراین، من این کار را انجام میدهم: به اعلان تابع برمیگردم، پیادهسازیها را بررسی میکنم، سعی میکنم آنچه را که قرار است به کجا برود. و اگر قرار بود تکمیل خودکار من را نجات دهد؟ فراموشش کن. بی فایده بود ویرایشگر کد هم مثل من بی خبر بود. 😅
مطمئنا، شما می توانید استدلال می کنند که نظرات JSDoc ممکن است کمک کند. اما اگر این همه تلاش را برای ثبت دستی انواع و امضاهای عملکرد انجام می دهید، پس چرا این کار را با خودتان انجام می دهید؟ شما اساساً کار TypeScript را انجام می دهید، اما بدون هیچ یک از مزایای واقعی. TypeScript تمام این حدسها را حذف میکند و به شما امکان میدهد با اطمینان و سرعت کدنویسی کنید.
TypeScript آینده است (و حال)
TypeScript در نسخه پنجم خود قرار دارد. این اساسا در 100 هزار ستاره در GitHub. این دارد بیش از 55 میلیون دانلود در هر هفته در NPM. پروژهها و شرکتهای بزرگ بیشتری از آن استفاده میکنند. دلیلی برای آن وجود دارد: TypeScript ثبات، مقیاس پذیری و اطمینان را برای پایگاه های کد به ارمغان می آورد. این فقط در مورد پروژه امروز نیست، بلکه در مورد ساخت چیزی است که می تواند رشد کند و بدون فروپاشی تحت وزن خود رشد کند. این در مورد عدم نیاز به نوشتن مستندات و آزمایشها به طور جداگانه است (البته به طور کامل جایگزین آنها نمیشود).
بنابراین، بیایید سر و صدا را کاهش دهیم. نفرتی که TypeScript در سال 2024 دریافت می کند تا حد زیادی نابجا است. مطمئنا، این کامل نیست – هیچ ابزاری نیست. اما مزایای آن بسیار بیشتر از معایب آن است. زمان آن رسیده است که تایپ اسکریپت را به عنوان یک مانع نبینیم و آن را به عنوان ابزار ضروری در نظر بگیریم.
آن را در آغوش بگیرید، آن را بیاموزید، و خواهید دید که کدهای بهتر و سریعتر می نویسید. 💪
TypeScript کامل نیست، اما اجازه ندهید که کامل دشمن خوبی باشد!
البته تایپ اسکریپت هم خالی از اشکال نیست. یکی از اشکالات مشروع، سربار راه اندازی آن در پروژه ای است که با آن ساخته نشده است. تبدیل یک پایگاه کد قدیمی به TypeScript میتواند فرآیندی زمانبر باشد، و همیشه برای تیمهایی که تحت ضربالاجلهای محدود هستند، امکانپذیر نیست. ⏳
علاوه بر این، گاهی اوقات سیستم نوع سختگیرانه TypeScript می تواند احساس کند که به جای اینکه به شما کمک کند، با شما می جنگد، به خصوص زمانی که با انواع پیچیده یا کتابخانه های شخص ثالث سروکار دارید که به درستی تایپ نشده اند.
TypeScript فقط به خوبی برنامه نویسی است که آن را پیکربندی می کند.من روی چندین پروژه TS کار کردهام، که برخی از آنها تنظیمات نسبتاً ضعیفی داشتند که به مردم امکان استفاده از آنها را میداد. any انواع یا اجتناب از سخت گیری یا null چک ها شما کدهای تایپ نشده یا شل تایپ شده را در یک پایگاه کد تایپ شده مخلوط می کنید و وضعیت ممکن است به اندازه کافی بد باشد.
از اینجا به کجا می رویم؟
گفته می شود، اینها دردسرهای کوتاه مدت برای دستاوردهای بلندمدت هستند. بله، ممکن است در ابتدا سرعت شما را کاهش دهد، اما ثبات و قابلیت نگهداری شما بیشتر از جبران آن است.
و این مسائل چند سال پیش بسیار شدیدتر بود، اما مسلما اکنون بسیار بهتر شده است.
به نظر من برای یادگیری TS تلاش کنید. TS شما را قادر می سازد تا آن را تا حدی به یک پایگاه کد موجود معرفی کنید – آن را امتحان کنید. یا شاید پروژه های حیوان خانگی کوچکتری ایجاد کنید که از TypeScript استفاده می کنند.
به علاوه، توسعه دهندگان TS بر اساس جدیدترین نظرسنجی StackOverflow، درآمد کمی بیشتر از توسعه دهندگان JS دارند.
و صحبت از کد بهتر …
اگر کنجکاو هستید که چگونه TypeScript می تواند یک پروژه دنیای واقعی را ارتقا دهد:
⚡️ مخزن Middleware را بررسی کنید ⚡️
این یک نمونه عالی از TypeScript در عمل است، و چه کسی می داند—شما ممکن است چند ایده برای پروژه های خود انتخاب کنید! 🚀
حتی بهتر است، به ما بگویید که چگونه کد ما بهترین نیست!اگر پیشنهادهای محکمی دارید، پست را اصلاح می کنم تا آنها را به عنوان نمونه درج کنم!
من اخیراً این روند را می بینم: توسعه دهندگان بیشتر و بیشتری از TypeScript سرکوب می کنند. این مشکلات از “بیش از حد پیچیده” تا “آهسته شدن توسعه” متغیر است.
در حالی که همه نگرانی ها بی اساس نیستند، نفرت در TypeScript در سال 2024 فقط زیاد نیست.
بیایید آن را تجزیه کنیم. 🔍
TypeScript دشمن شما نیست، شبکه ایمنی شماست
متوجه شدم – جاوا اسکریپت انعطاف پذیر، پویا است و به شما امکان می دهد کد را سریع ارسال کنید. اما همین انعطافپذیری نیز منجر به اشکالاتی میشود که تا دیر نشده به سختی میتوان آنها را گرفت. سختگیری TypeScript برای کاهش سرعت شما وجود ندارد. آنجاست تا شما را از خرج کردن نجات دهد مشکلات رفع اشکال ساعت که می توانست زود دستگیر شود.
در اینجا یک مثال است:
let id;
getUserByID(id);
در تئوری، id
می تواند یک عدد، یک UUID، یک رشته تصادفی یا یک رشته ساخت یافته باشد. اما بسته به نوع آن، اگر بخواهید آن را افزایش دهید یا آن را به API ارسال کنید که انتظار دارد ساختار و نوع خاصی داشته باشد، ممکن است با خطا مواجه شوید.
و با نگاه کردن به نحوه استفاده می توانید نوع آن را بفهمید. اما می دانید چه چیزی باعث می شود این a غیر موضوعی?
let id: number;
function getUserByID(id: string) {...}
// and that's the most basic thing you could do
getUserByID(id); // boink, error!
وقتی TypeScript را به پروژه خود اضافه می کنید، یک لایه امنیتی اضافه می کنید. مثل بستن کمربند ایمنی است. مطمئناً، میتوانید بدون آن رانندگی کنید، اما وقتی یک اقدام احتیاطی ساده میتواند شما را از تصادف نجات دهد، چرا ریسک کنید؟ 🚗💥 در زمانی که کیفیت نرمافزار مهمتر از همیشه است، بررسی نوع تایپ اسکریپت محافظی است که منطقی به نظر میرسد.
آنقدرها هم که فکر می کنید پیچیده نیست
شکایت دیگری که اغلب میشنوم این است که TypeScript “بیش از حد پیچیده” است. اما بیایید واقعی باشیم – جاوا اسکریپت می تواند یک آشفتگی باشد. امضاهای تابعی که هر ورودی را می پذیرند، اشیایی که شکل آنها را تغییر می دهند، و کدهایی که یک اشتباه تایپی از شکسته شدن در تولید فاصله دارند. TypeScript پیچیدگی اضافه نمی کند. آن را رسمی یا استاندارد می کند.
اینگونه درباره اش فکر کن:
شما روی قسمت جلویی یک ویژگی کار می کنید و ممکن است شخص دیگری با شما همپوشانی داشته باشد. همچنین APIهای Backendی وجود خواهند داشت که باید آنها را با هم ترکیب کنید، اما هنوز آماده نیستند. به هر حال از شما خواسته شده است که کار رابط کاربری را شروع کنید.
چگونه مطمئن می شوید که کدی که در حال حاضر می نویسید با داده هایی که از API ها دریافت می کنید مطابقت دارد؟ و اینکه اگر چیزی در API ها تغییر کند، منبعی از حقیقت وجود دارد که همه طرف ها باید به آن پایبند باشند؟
درست است.
با تعریف انواع.
با انواعی که قبل از شروع پیادهسازی تعریف شدهاند، نباید سردرگمی در مورد قراردادهای دادهای که بین UI و API به اشتراک گذاشته میشوند وجود داشته باشد، و اگر چیزی واقعاً متفاوت است، تمام کاری که باید انجام شود این است که به قراردادهایی که قبلاً تعریف شدهاند پایبند باشید.
اگر میتوانید React را یاد بگیرید، با Webpack بحث کنید یا با async/await مقابله کنید، میتوانید TypeScript را یاد بگیرید. و در اینجا ضربه زننده است – این یک مهارت است سود سهام پرداخت می کند. منحنی یادگیری ارزشش را دارد زیرا شما را وادار می کند تا در مورد کد خود انتقادی تر فکر کنید. به جای هک کردن یک راه حل سریع، به معماری، انواع و قابلیت نگهداری طولانی مدت فکر می کنید. 🛠️
توسعه سریعتر، نه آهسته تر
این افسانه وجود دارد که TypeScript توسعه را کند می کند. اما در واقعیت، اغلب برعکس است. با گرفتن خطاها در زمان کامپایل به جای زمان اجرا، TypeScript به شما کمک می کند در دراز مدت سریعتر حرکت کنید. شما روزهای خود را در کنسول مرورگر نمی گذرانید، به دنبال متغیرهای تعریف نشده یا اجبارهای نوع عجیب و غریب هستید. 🚀
ابزار TypeScript نیز درجه یک است.
ویژگیهایی مانند تکمیل خودکار، ابزارهای refactoring، و مستندات درون خطی، تجربه توسعه را روانتر میکنند. شما فقط کد نمینویسید، بلکه بهجای اینکه در تاریکی سرگردان شوید، در جادهای با نور و علامتگذاری خوب پیمایش میکنید. 🌟
اینجا یک حکایت شخصی.
قبل از اینکه به طور کامل تایپ اسکریپت را بپذیرم، اغلب خودم را در علف های هرز باستان شناسی پایگاه کد می دیدم. من با یک تابع مواجه میشوم و نمیدانم چه آرگومانهایی قرار است داشته باشد. رشته ای بود؟ یک شی؟ چه پارامترهایی در این شی مورد نیاز بود؟ کدام یک اختیاری بود؟ آیا چیزی که برای ظاهر اختیاری ساخته شده بود در واقع در جایی از callstack مورد نیاز بود؟
زیرا توسعه دهندگان کامل نیستند، نامهای ضعیف متغیرها، قراردادهای نامگذاری ناسازگار، و اولویتهای کدنویسی همیشه در راه هستند…
بنابراین، من این کار را انجام میدهم: به اعلان تابع برمیگردم، پیادهسازیها را بررسی میکنم، سعی میکنم آنچه را که قرار است به کجا برود. و اگر قرار بود تکمیل خودکار من را نجات دهد؟ فراموشش کن. بی فایده بود ویرایشگر کد هم مثل من بی خبر بود. 😅
مطمئنا، شما می توانید استدلال می کنند که نظرات JSDoc ممکن است کمک کند. اما اگر این همه تلاش را برای ثبت دستی انواع و امضاهای عملکرد انجام می دهید، پس چرا این کار را با خودتان انجام می دهید؟ شما اساساً کار TypeScript را انجام می دهید، اما بدون هیچ یک از مزایای واقعی. TypeScript تمام این حدسها را حذف میکند و به شما امکان میدهد با اطمینان و سرعت کدنویسی کنید.
TypeScript آینده است (و حال)
TypeScript در نسخه پنجم خود قرار دارد. این اساسا در 100 هزار ستاره در GitHub. این دارد بیش از 55 میلیون دانلود در هر هفته در NPM. پروژهها و شرکتهای بزرگ بیشتری از آن استفاده میکنند. دلیلی برای آن وجود دارد: TypeScript ثبات، مقیاس پذیری و اطمینان را برای پایگاه های کد به ارمغان می آورد. این فقط در مورد پروژه امروز نیست، بلکه در مورد ساخت چیزی است که می تواند رشد کند و بدون فروپاشی تحت وزن خود رشد کند. این در مورد عدم نیاز به نوشتن مستندات و آزمایشها به طور جداگانه است (البته به طور کامل جایگزین آنها نمیشود).
بنابراین، بیایید سر و صدا را کاهش دهیم. نفرتی که TypeScript در سال 2024 دریافت می کند تا حد زیادی نابجا است. مطمئنا، این کامل نیست – هیچ ابزاری نیست. اما مزایای آن بسیار بیشتر از معایب آن است. زمان آن رسیده است که تایپ اسکریپت را به عنوان یک مانع نبینیم و آن را به عنوان ابزار ضروری در نظر بگیریم.
آن را در آغوش بگیرید، آن را بیاموزید، و خواهید دید که کدهای بهتر و سریعتر می نویسید. 💪
TypeScript کامل نیست، اما اجازه ندهید که کامل دشمن خوبی باشد!
البته تایپ اسکریپت هم خالی از اشکال نیست. یکی از اشکالات مشروع، سربار راه اندازی آن در پروژه ای است که با آن ساخته نشده است. تبدیل یک پایگاه کد قدیمی به TypeScript میتواند فرآیندی زمانبر باشد، و همیشه برای تیمهایی که تحت ضربالاجلهای محدود هستند، امکانپذیر نیست. ⏳
علاوه بر این، گاهی اوقات سیستم نوع سختگیرانه TypeScript می تواند احساس کند که به جای اینکه به شما کمک کند، با شما می جنگد، به خصوص زمانی که با انواع پیچیده یا کتابخانه های شخص ثالث سروکار دارید که به درستی تایپ نشده اند.
TypeScript فقط به خوبی برنامه نویسی است که آن را پیکربندی می کند.
من روی چندین پروژه TS کار کردهام، که برخی از آنها تنظیمات نسبتاً ضعیفی داشتند که به مردم امکان استفاده از آنها را میداد. any
انواع یا اجتناب از سخت گیری یا null
چک ها شما کدهای تایپ نشده یا شل تایپ شده را در یک پایگاه کد تایپ شده مخلوط می کنید و وضعیت ممکن است به اندازه کافی بد باشد.
از اینجا به کجا می رویم؟
گفته می شود، اینها دردسرهای کوتاه مدت برای دستاوردهای بلندمدت هستند. بله، ممکن است در ابتدا سرعت شما را کاهش دهد، اما ثبات و قابلیت نگهداری شما بیشتر از جبران آن است.
و این مسائل چند سال پیش بسیار شدیدتر بود، اما مسلما اکنون بسیار بهتر شده است.
به نظر من برای یادگیری TS تلاش کنید. TS شما را قادر می سازد تا آن را تا حدی به یک پایگاه کد موجود معرفی کنید – آن را امتحان کنید. یا شاید پروژه های حیوان خانگی کوچکتری ایجاد کنید که از TypeScript استفاده می کنند.
به علاوه، توسعه دهندگان TS بر اساس جدیدترین نظرسنجی StackOverflow، درآمد کمی بیشتر از توسعه دهندگان JS دارند.
و صحبت از کد بهتر …
اگر کنجکاو هستید که چگونه TypeScript می تواند یک پروژه دنیای واقعی را ارتقا دهد:
⚡️ مخزن Middleware را بررسی کنید ⚡️
این یک نمونه عالی از TypeScript در عمل است، و چه کسی می داند—شما ممکن است چند ایده برای پروژه های خود انتخاب کنید! 🚀
حتی بهتر است، به ما بگویید که چگونه کد ما بهترین نیست!
اگر پیشنهادهای محکمی دارید، پست را اصلاح می کنم تا آنها را به عنوان نمونه درج کنم!