<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های محمد گلدست | Mohammad Goldast</title>
        <link>https://virgool.io/feed/@mgoldast</link>
        <description>برنامه نویس | @Mgoldast</description>
        <language>fa</language>
        <pubDate>2026-04-15 02:50:20</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/3543/avatar/Ohn0a5.png?height=120&amp;width=120</url>
            <title>محمد گلدست | Mohammad Goldast</title>
            <link>https://virgool.io/@mgoldast</link>
        </image>

                    <item>
                <title>مهاجرت از جاوا‌اسکریپت به تایپ‌اسکریپت در سال 99 ( قسمت سوم )</title>
                <link>https://virgool.io/@mgoldast/%D9%85%D9%87%D8%A7%D8%AC%D8%B1%D8%AA-%D8%A7%D8%B2-%D8%AC%D8%A7%D9%88%D8%A7%D8%A7%D8%B3%DA%A9%D8%B1%DB%8C%D9%BE%D8%AA-%D8%A8%D9%87-%D8%AA%D8%A7%DB%8C%D9%BE%D8%A7%D8%B3%DA%A9%D8%B1%DB%8C%D9%BE%D8%AA-%D8%AF%D8%B1-%D8%B3%D8%A7%D9%84-99-%D9%82%D8%B3%D9%85%D8%AA-%D8%B3%D9%88%D9%85-xcrtqlfxzktw</link>
                <description>سلام. امروز برای سومین قسمت از مهاجرت به تایپ‌اسکریپت، قصد داریم تا راجب به سایر تایپ ها صحبت کنیم.  در قسمت قبل همراه با معرفی تایپ ها سعی کردیم برخی از اونها رو با مثال های عملی توضیح بدیم و درک کنیم که با استفاده از تایپ ها ، تایپ‌اسکریپت چگونه به کمک ما میاد و به روند توسعه، سرعت میبخشه.www.skywell.software عکس ازاگر تازه به ما پیوستین: میتونید در قسمت اول از مهاجرت، راجب به دلیل مهاجرت و همچنین مراحل اولیه ی نصب زبان تایپ‌اسکریپت، مطالعه کنید و در قسمت دوم از مهاجرت میتونید بحث تایپ هارو به عنوان اولین بحث از دنیای تایپ‌اسکریپت مطالعه کنید.تایپ ها در تایپ‌اسکریپت:BooleanNumberStringObjectArrayTupleEnumAnyVoidNull and UndefinedNeverدر جلسه ی قبل تونستیم تا بخش آرایه ها توضیح بدیم و بررسی کنیم اما  این قسمت رو به بررسی و معرفی ادامه ی تایپ ها اختصاص دادیم.نوع Tuple:چندتایی یا Tuple یک نوع از آرایه ها هستند که تعداد و نوع Elements مشخصی دارند. مثلا فرض کنید شما یک آرایه از اطلاعات شخصی خود دارید و اطمینان دارین که Element اول اون آرایه یک String هست و اسم شمارو توی خودش نگه داشته و خانه ی دوم اون آرایه یک عدد است که سن شمارو به صورت Number در بر داره. به مثال زیر از داکیومنت خود سایت تایپ‌اسکریپت دقت کنید:به نحوه ی معرفی یک چندتایی دقت کنید.  اگر به چندتایی تعریف شده در عکس بالا، داده ای به غیر از رشته و عدد ( با رعایت ترتیب ) داده شود، دچار خطا شده و جلوی کامپایل کد شما گرفته میشود.  #درگوشی : اگر مرتب دچار تغییر در داده های چندتایی شدید، یا داده از سمت سرور با تغییرات همراه بود، میتوانید از یک آرایه با نوع Any  استفاده کنید، که تایپ‌اسکریپت بیخیال بررسی داده های درون آرایه شودنوع Enum: با یک حرکت زیبا از سمت تایپ‌اسکریپت روبرو هستیم به اسم Enum type. اما Enum-ها در تایپ‌اسکریپت دقیقا مشابه با Enum-ها در سایر زبان های شیء گرا هستند که امکان تعریف مجموعه از ثابت هارو به ما میدن. بیاین واضح تر اونهارو توی جاوااسکریپت بررسی کنیم:فرض کنید شما یه داده مشابه با عکس بالا رو از سرور دریافت کردید و نیاز دارید تا بر اساس Role هر کاربر، بهش دسترسی های متفاوتی رو بدین. مثلا مدیر سیستم میتونه هر کاری انجام بده و نویسنده فقط میتونه مقالات اون سیستم رو بنویسه. حالا فرض کنیم شرط زیر برای این هست که بررسی کنیم کاربر چه دسترسی هایی دارد. عکس زیر رو بررسی کنید:به نظر شما کد console.log() برای کاربر با آیدی 100 اجرا میشه ؟  جواب خیر است. چرا ؟ چون به صورت سهوا ما حرف n از &#x27;SYSTEM_ADMIn&#x27; رو به صورت حرف کوچک نوشتیم. ولی اگر بیایم پیش خودمون در نظر بگیریم که میتوان چندین ثابت در نظر گرفت و همیشه مقادیر هماهنگ شده با برنامه نویسان سمت سرور را در ثابت ها ذخیره کرد، میتوان از بروز این خطاها جلوگیری کرد. مثال زیر رو دقت کنید:دقیق کد بالارو مطالعه کنید. ما اومدیم با تعریف نقش ها (Roles) به صورت متغیرهای ثابت در بالای کد، ضریب به وجود اومدن خطارو کاهش دادیم و هرجا نیاز باشه از اسم متغییر استفاده میکنیم. حالا دقت کنید ممکنه اگر شما بعد از یکسال نیاز به بروزرسانی کد داشته باشید و سمت سرور به شما اعلام کنه از این به بعد Role هارو بجای رشته، به صورت عدد برای شما ارسال میکنیم و شما هیچ ثابتی در نظر نگرفته باشید و مستقیم از رشته ی SYSTEM_ADMIN استفاده کرده باشید، تصور کنید چقدر نیاز هست جای به جای اپلیکیشن خودتون رو Refactor کنید. باید برید و هرجایی از رشته ی SYSTEM_ADMIN استفاده کردید تغییر بدید به مثلا عدد 1، ولی اگر ثابت هارو تعریف کرده باشید فقط کافیه مقدار ثابت ADMIN_ROLE رو به 1 تغییر بدید و به این ترتیب نیاز نیست کل کد رو تغییر بدید. الان درک کردیم یک مجموعه از ثابت ها، چرا میتونند بر پایداری کد ما تاثیر مثبت داشته باشند.مثال بالا رو در تایپ‌اسکریپت بررسی کنیم با این تفاوت که فرض کنیم ما و سمت سرور توافق کردیم اگر کاربر مدیر سیستم بود، داده ی ارسالی از سمت سرور عدد 10 باشد. اگر کاربر نویسنده بود، داده ی ارسالی رشته ی &#x27;Author&#x27; باشد و اگر کاربر بیننده بود داده ی ارسالی عدد 100 باشد. ( امیدوارم هیچوقت با بکندی به این بهم ریختگی روربرو نشید ولی ما بدترین و بی نظم ترین داده رو بررسی کردیم ). عکس زیر رو مشاهده کنید:دقت کنید:حرف اول Enum خود رو با حروف بزرگ بنویسید و این یک قانون از قبل توافق شده است. مثل Role در مثال بالا اگر Enum هارا مقدار دهی نکنیم، به طور خودکار از 0 شروع به مقدار دهی میشوند. و اگر بخواهیم مثلا از 1 شروع به مقدار دهی شوند، فقط کافیست اولین مقدار ثابت در Enum را برابر 1 قرار دهیم. به مثال زیر دقت کنید:enum Role { ADMIN = 1, AUTHOR, GUEST };
// ADMIN === 1 | AUTHOR === 2 | GUEST === 3نوع Any: نوع Any به شما این امکان را میدهد که متغییر خود را به صورت Dynamic Type معرفی کنید. به مثال زیر دقت کنید: نوع Void:نوع Void یک مقدار شبیه به نوع Any است، هنگامی که برای یک تابع استفاده شود، میتواند نشانه گر این باش که این تابع وظیفه ی انجام یک سری عملیات را دارد ولی چیزی را بازگشت نمیکند. مثال زیر رو دقت کنید:همچنین برای استفاده از نوع Void، میتوانید مقادیر Null و Undefined رو برای اون متغیر فقط اعمال کنید البته دقت کنید اگر برای یک متغییر نیاز دارید از Null استفاده کنید باید در فایل کانفیگ تایپ اسکریپت، &#x60;strictNullChecks&#x60; را مقدار دهی کنید که در جلسات بعدی به طور کامل راجب کانفیگ اولیه ی پروژه بحث خواهیم کرد.نوع Null و Undefined:در تایپ‌اسکریپت نوع Null و Undefined نیز مطرح هستند و بسیار شبیه به Void میتوان آنهارا معرفی کرد. به طور پیشفرض، Null و Undefined یک Sub Type از سایر Typeها هستند، مثلا میتوانید Null رو به متغیری که از نوع Number هست، نسبت دهید. مثال زیر را ببینید:نوع Never:استفاده نوع Never، بیشتر در زمانهایی است که Function یا Arrow function برای انجام یک عملیات یا بروز یک خطا است و قصد به Return مقداری را ندارد. مثلا شما یک تابع را در نظر بگیرید که وظیفه ی Error exception را دارد و میتواند از نوع Never باشد. برای مثال، تکه کد زیر رو مشاهده کنید:و یک نکته از مستندات سایت تایپ اسکریپت برای نوع Never: The never type is a subtype of, and assignable to, every type; however, no type is a subtype of, or assignable to, never (except never itself). Even any isn’t assignable to never.نکته های پایانی قسمت سوم:اول از همه چیز، امیدوارم در این روزهای قرنطینه، این آموزشات برای شما دوستان مفید باشه. سعی کردیم توضیحات را کامل و همراه با مثال بررسی کنیم تا مفهوم را کامل به شما منتقل کنیم.در قسمت بعدی یک مقدار راجب به TypeScript transpiler صحبت خواهیم کرد و کانفیگ یک پروژه را انجام میدهیم.همچنین شما میتونید:نظرات و پیشنهادات خود را در قالب نظر، برای من ارسال کنید، حتما مطالعه میکنم و حتما پاسخ میدم?. و برای حمایت از من این مقاله لایک رو کنید ❤️.میتونید با  @Mgoldast در اینستاگرام / لینکدین و توییتر ، با من در تماس باشید.حال دلتون خوش.محمد گلدست / هفدهم فروردین ماه ۱۳۹۹.</description>
                <category>محمد گلدست | Mohammad Goldast</category>
                <author>محمد گلدست | Mohammad Goldast</author>
                <pubDate>Sun, 05 Apr 2020 18:05:18 +0430</pubDate>
            </item>
                    <item>
                <title>مهاجرت از جاوا‌اسکریپت به تایپ‌اسکریپت در سال 99 ( قسمت دوم )</title>
                <link>https://virgool.io/applymag/%D9%85%D9%87%D8%A7%D8%AC%D8%B1%D8%AA-%D8%A7%D8%B2-%D8%AC%D8%A7%D9%88%D8%A7%D8%A7%D8%B3%DA%A9%D8%B1%DB%8C%D9%BE%D8%AA-%D8%A8%D9%87-%D8%AA%D8%A7%DB%8C%D9%BE%D8%A7%D8%B3%DA%A9%D8%B1%DB%8C%D9%BE%D8%AA-%D8%AF%D8%B1-%D8%B3%D8%A7%D9%84-99-%D9%82%D8%B3%D9%85%D8%AA-%D8%AF%D9%88%D9%85-cso6oekh1sge</link>
                <description>سلام, محمد گلدست هستم و امروز میخوایم در قسمت دوم از مهاجرت به تایپ‌اسکریپت, در رابطه با تایپ ها صحبت کنیم و دقیقا بررسی کنیم که چرا هنگام بروز اشتباه در توسعه ی نرم افزار, تایپ‌اسکریپت میتونه به ما کمک کنه ولی جاوا‌اسکریپت جلوی مارو برای خطا کردن نمیگیره. اگه فکر میکنید نیازه تا یادآوری بشه: https://virgool.io/@mgoldast/%D9%85%D9%87%D8%A7%D8%AC%D8%B1%D8%AA-%D8%A7%D8%B2-%D8%AC%D8%A7%D9%88%D8%A7-%D8%A7%D8%B3%DA%A9%D8%B1%DB%8C%D9%BE%D8%AA-%D8%A8%D9%87-%D8%AA%D8%A7%DB%8C%D9%BE-%D8%A7%D8%B3%DA%A9%D8%B1%DB%8C%D9%BE%D8%AA-%D8%AF%D8%B1-%D8%B3%D8%A7%D9%84-99-%D9%82%D8%B3%D9%85%D8%AA-%D8%A7%D9%88%D9%84-fa0jrezdzwlp و اما تایپ ها در تایپ‌اسکریپت:با ساختار تایپ ها در تایپ‌اسکریپت تقریبا آشناییم چون با بعضی از اونها توی جاوا‌اسکریپت زیاد سروکار داریم. بیاین ببینیم از لیست تایپ ها چندتا از اونهارو میشناسیم :BooleanNumberStringObjectArrayTupleEnumAnyVoidNull and UndefinedNeverخوب با اینکه از لیست بالا با چندتا از اونها آشنایی داریم ولی میخوایم همه رو توضیح بدیم و بررسی کنیم تا موردی از قلم نیوفته, قبل از بررسی بیاین یاد بگیریم چجور تایپ هارو برای تعریف متغییر استفاده کنیم:let [VARIABLE_NAME]: [TYPE] = [VALUE];برای مثال :let isDone: boolean = false;خیلی ساده فقط با اضافه کردن نوع متغییر میتونیم برای کامپایلر تایپ‌اسکریپت مشخص کنیم هرجایی که نیاز به استفاده از متغییر isDone بود, شما به من یادآوری کن که از نوع boolean هست, و اجازه نده توی فرایند توسعه, من اشتباه کد بزنم یا چیزی رو اضافه کنم که در هنگام اجرا روی حالت عملیاتی (Production mode) باعث بروز خطا بشه. بریم برای بررسی عمیق تایپ ها:نوع Boolean: ابتدایی ترین داده, مقدار صحیح یا غلط (true | false) است که هم جاوا‌اسکریپت و هم تایپ‌اسکریپت به اون boolean میگن و به شکل زیر قابل تعریف و استفاده است: let isDone: boolean = false;نوع Number:همانند جاوا‌اسکریپت, تمامی اعداد در تایپ‌اسکریپت دارای یک نوع هستند که همه ی این نوع هارو ما Number میشناسیم. علاوه بر hexadecimal و decimal, تایپ‌اسکریپت مقادیر octal و binary رو که در ES2015 معرفی شده بودند رو هم پشتیبانی میکنه. به نمونه های زیر دقت کنید :let decimal: number = 6; 
let hex: number = 0xf00d; 
let binary: number = 0b1010; 
let octal: number = 0o744;نوع String: یکی دیگر از اساسی ترین بخش ها برای ساختن برنامه های جاوا‌اسکریپت, بخش کار با داده های متنی است. مثل تمامی زبان های برنامه نویسی دیگر در تایپ‌اسکریپت به داده های متنی, string میگوییم. دقیقا مانند جاوا‌اسکریپت, تایپ‌اسکریپت هم برای داده های متنی از ( &#x27;&#x27; ) و ( &#x27; ) استفاده میکند. هرچند ما برای قالب چند خطی یا قرار دادن متغییر بین داده های متنی دقیقا میتوانیم از ( ‍‍&#x60;&#x60; ) همانند جاوااسکریپت استفاده کنیم. به مثال های زیر دقت کنید:let color: string = &amp;quotblue&amp;quot 
color = &#039;red&#039;;

// backtick/backquote (`) character:

let fullName: string = `Bob Bobbington`; 
let age: number = 37;
 let sentence: string = `Hello, my name is ${ fullName }.  I&#039;ll be ${ age + 1 } years old next month.`;تئوری کافیه:خوب از اونجایی که خودم حوصله‌ام سر میره همش خشک و خالی فقط بخونم. تصمیم گرفتم یه استراحت بدیم به خودمون و بررسی کنیم چند مثال عملی رو با همین سه نوع بالا که معرفی کردیم.پس همونجور که توی درس قبل توضیح دادم,‌ یه فایل app.ts  درست کردم و شروع کردم به بررسی تفاوت‌های تایپ‌اسکریپت و جاوااسکریپت.عکس زیر رو ببینید: در مرحله ی اول ما یک کد رو دقیقا بین جاوااسکریپت و تایپ‌اسکریپت مقایسه کردیم. دقت کنید حتی ‌app.ts رو ترنسپایل نکردیم به جاوا‌اسکریپت تا حس دولوپ و اخطار های تایپ‌اسکریپت رو در لحظه تجربه کنیم. و دقت کنید توی قسمت تایپ‌اسکریپت ما هیچ تایپی رو برای متغییر ها معرفی نکردیم.اینجا اولین چیزی که مشاهده میکنیم, اخطاری هست که  تایپ‌اسکریپت به ما میده که آقای برنامه نویس حواست باشه که تایپ های پارامتر ها به دلیل تعریف نشدن, به صورت any در نظر گرفته میشن. یعنی ترنسپایلر تایپ‌اسکریپت میگه بررسی ورودی هارو از عهده ی من خارج کردید و من هرچی اومد رو مستقیم راه میدم بیاد داخل تابع.حالا اومدیم برای ورودی تابع addInTS یک نوع در نظر گرفتیم و به ترنسپایلر تایپ اسکریپت گفتیم فقط و فقط شما اجازه دارین ورودی از جنس عدد دریافت کنید.دقت کنید بعد به طور عمدی ما خط ۵ از هر دو فایل رو تبدیل به رشته کردیم ( فرض میکنیم این اشتباه سهوی در حین توسعه به وجود اومده‌ ), به نظر شما چه بازخوردی از این دو زبان میتونیم دریافت کنیم ؟ عکس زیر رو ببینید: دیدیم که جاوااسکریپت واقعا هیچ ایده ای برای ارسال یک رشته به تابعی که انتظار دریافت عدد رو داره, واسش مطرح نیست و کاملا با خیال راحت اجازه میده شما هر اشتباهی رو عمدا یا سهوا توی کد وارد کنید. ولی اگر دقت کنید تایپ‌اسکریپت به غیرتش برخورده و میگه من حتی اجازه نمیدم که شما بتونید کد رو کامپایل کنید که اگر کامپایل هم کنید این پیام رو دریافت میکنید‌: ولی خب شاید شما قبول نکنید و بگید با راه حل زیر میشه حلش کرد موضوع رو:قبول دارم حرف شمارو, منم نمیگم قطعا راه حلی وجود نداره ولی هدف اینه که هم تمیز تر کد بزنیم هم لذت ببریم و تا جایی که میتونیم از ابزار استفاده کنیم. (شاید نوشتن نرم افزار توی Notepad++ هم ممکن باشه ولی شما هیچوقت نمیتونین سرعت و امکاناتی که VSCode بهتون میده رو با Notepad++ مقایسه کنید).نوع Object: ما با Object توی جاوااسکریپت آشنایی داریم و میدونیم میشه داده ایی رو به صورت کلید-مقدار رو توسط Object نگهداری کرد. اما بیاین Object زیر رو بدون تعریف نوع در دو زبان برنامه نویسی مقایسه کنیم: خب بازم تاثیر تایپ‌اسکریپت رو میتونیم حین توسعه ببینیم و متوجه میشیم که توی خط ۹ به ما اخطار میده  کلیدی به اسم nickname توی whoAmI تعریف نشده و اعلام میکنه فقط از کلیدهای موجود میتوانید استفاده کنید.حالا بریم بررسی کنیم چجور میشه برای Objectها نوع تعریف کرد.خوب میتوینم ببینیم در عکس بالا شیء رو نوع دادیم, و به طور کلی اگر نوع Object رو به شیء بالا نسبت ندیم در بکگراند, ترنسپایلر تایپ‌اسکریپت میاد و تک تک کلید های اون Object رو بررسی میکنه و تایپ رو بهشون نسبت میده, مثل عکس زیر: دقت کنید به عکس بالا, داره دقیقا یه Object رو به ما میده که شامل کلید-نوع هست و بجای استفاده از (,) بعد از هر کلید-نوع, از (;) استفاده کرده, بچه ها دقت کنید ماهم میتونیم این شیء از نوع هارو برای Objectها بنویسیم و اونهارو خصوصی سازی (Customize) کنیم. به عکس زیر دقت کنید:توی عکس بالا به دو نکته میتونیم برسیم, یکی اینکه چجور میشه برای کلیدهای یک Object نوع تعریف کرد و اینکه شما وقتی اقدام به تعریف یک نوع برای یک کلید از یک شیء میکنید, ترنسپایلر تایپ‌اسکریپت شمارو موظف میکنه تا همه ی کلیدهارو نوع بدید, همونطور که میبینید هنگام ترنسپایل کردن در ترمینال با پیام خطا مواجه میشیم که برای experience نوع تعریف نکردیم.بریم عکس زیر رو ببینیم که بحث  Object هارو تموم کنیم و بریم سراغ موردهای دیگه:توی عکس بالا, تایپ هارو مشخص کردیم و میخوایم یک اشتباه عمدا توی کد به وجود بیاریم و ببینیم بازخورد تایپ‌اسکریپت نسبت به اشتباه ما چی هست؟ پس عکس زیر رو ببینید:اومدیم توی لاین ۱۵, مقدار age رو برابر &#x27;23&#x27; قرار دادیم و حتی فایل رو ذخیره نکردیم که تایپ‌اسکریپت سریع خودش وارد قضیه شد و اخطار داد که تغییر age به مقدار string ممکن نیست چون قبلا به صورت  number تعریف شده است.نوع Array:یکی از محدودیت های دیگه ی تایپ‌اسکریپت در آرایه ها خودش رو خوب نشون میده به صورتی که در حالت عادی, ما فقط توانایی تعریف آرایه هایی داریم که ایندکس های اون آرایه از یک نوع باشند.انواع تعریف آرایه: آرایه هارو به دو روش میشه طراحی کرد, در روش اول با نوشتن نوع و سپس نماد [] میتوان اشاره کرد که این متغییر از نوع آرایه است یا میتوان از روش &lt;Array&lt;INDEX_TYPE استفاده کرد به مثال زیر دقت کنید:let strings: string[] = [&#039;Hello&#039;، &#039;World&#039;، &#039;!&#039;];let numbers: Array&lt;number&gt; = [1، 2، 3، 4، 5];آرایه‌های دو بُعدی:let numbersArray: number[][] = [[1،2،3،4،5]، [6،7،8،9،10]];خوب دوست دارین بررسی کنیم ببینیم تعریف نوع آرایه برای یک متغییر چقدر میتونه بهمون کمک کنه حین کد نویسی ؟ پس با هم میتونیم جاوااسکریپت و تایپ‌اسکریپت رو توی عکس زیر بررسی کنیم:در عکس بالا مشاهده میکنیم وقتی یک مقدار به hobbies در شیء تعریف شده ی بالاتر اضافه میکنیم اگر مقداری باشه که مورد انتظار تایپ‌اسکریپت نباشه, سریعا مانع میشه و اخطار میده ولی جاوااسکریپت به شما اصلا اخطار نمیده هرچند این کد در جاوااسکریپت دچار خطا نمیشه چون آرایه ها در جاوااسکریپت به صورت any تعریف میشن و هر مقداری رو توی خودشون ذخیره میکنند.عکس زیر رو ببینید تا یکی دیگر از کمک های تایپ‌اسکریپت رو باهم دیگه بررسی کنیم: لاین ۱۷ و ۱۸ و ۱۹ رو باهم یه بررسی کنیم. ببینید توی عکس بالا اومدیم آرایه ی hobbies رو پیمایش کردیم و عمدا نوشتیم item.map(). این مورد از نظر دو زبان بازخوردهای متفاوتی رو به همراه داشت, دقت کنید تایپ اسکریپت اطلاع داره که hobbies, خونه هایی از نوع رشته رو داراست ولی جاوااسکریپت هیچ ایده‌ایی راجب اینکه قراره چه رفتاری رو خونه های hobbies بگیرند, نداره.این مورد اگه در جاوااسکریپت بره روی سرور و اجرا بشه, بعد از اجرا دچار خطا میشه ولی در تایپ‌اسکریپت وقتی که هنوز کد شما ذخیره هم نشده, خطای خودش رو نشون میده و به شما میگه که سریعا اصلاح کنید. بیاین خطای کامپایل کد بالارو هم بررسی کنیم توی تایپ‌اسکریپت:امیدوارم تونسته باشم کل تجربیات خودم از یادگیری رو تا اینجا برای شما به اشتراک گذاشته باشم.و نکته های پایانی این قسمت:دوستان با اینکه کدنویسی و اسکرین شات گرفتن از کدها زمان مقاله رو زیادتر میکرد ولی خواستم اگر کاری رو انجام میدیم, با بهترین کیفیت ممکن انجام بشه و بتونیم به همدیگه در یادگیری مفاهیم کمک کنیم.حتما و لطفا, نظرات خودتون رو از این سبک آموزش برای من بنویسید. این نظرات گرانبهای شماست که میتونه به من کمک کنه تا مقالات رو بهتر بنویسم.و بازم من مشتاقانه منتظر هستم تا از تجربیات شما در خصوص زبان تایپ‌اسکریپت یا هر ابزار دیگه ای که کار کردید بدونم. شما میتونید با @Mgoldast در اینستاگرام / لینکدین و توییتر من رو دنبال کنید, سعی میکنم از تجربیات ارزشمند شما استفاده کنم.به زودی در قسمت بعد, سایر تایپ‌ها رو بررسی میکنیم و بیشتر مثال های عملی میزنیم. ?حال دلتون خوش.محمد گلدست / دوازدهم فروردین ماه ۱۳۹۹.</description>
                <category>محمد گلدست | Mohammad Goldast</category>
                <author>محمد گلدست | Mohammad Goldast</author>
                <pubDate>Tue, 31 Mar 2020 14:07:07 +0430</pubDate>
            </item>
                    <item>
                <title>مهاجرت از جاوا اسکریپت به تایپ اسکریپت در سال 99 ( قسمت اول )</title>
                <link>https://virgool.io/applymag/%D9%85%D9%87%D8%A7%D8%AC%D8%B1%D8%AA-%D8%A7%D8%B2-%D8%AC%D8%A7%D9%88%D8%A7-%D8%A7%D8%B3%DA%A9%D8%B1%DB%8C%D9%BE%D8%AA-%D8%A8%D9%87-%D8%AA%D8%A7%DB%8C%D9%BE-%D8%A7%D8%B3%DA%A9%D8%B1%DB%8C%D9%BE%D8%AA-%D8%AF%D8%B1-%D8%B3%D8%A7%D9%84-99-%D9%82%D8%B3%D9%85%D8%AA-%D8%A7%D9%88%D9%84-fa0jrezdzwlp</link>
                <description>سلام. من محمد گلدست هستم و قصد دارم که تجربیات خودم رو برای مهاجرت از جاوا اسکریپت به تایپ اسکریپت رو برای شما بزرگواران اینجا بنویسم. ممنونم اگر کیفیت مقالات رو با نظرات سازنده ی خودتون به سطح بالاتری برسونید. آموزش مهاجرت از جاوا اسکریپت به تایپ اسکریپت  | قسمت اولاول مقدمه رو بخونید:من یه توسعه دهنده ی ( تقریبا متعصب ) جاوا اسکریپت بودم که تصمیم گرفتم بنا به اصرار دوستان سوییچ کنم به تایپ اسکریپت :)) ، تا الان یه سری چیز میز یاد گرفتم که به نظر خیلی جذاب میومد. پس سعی کردم یه دستی به پروفایل ویرگولم بکشم و از تجربیات این مهاجرت و چیز هایی که یاد میگیریم رو با شما به اشتراک بزارم. حالا چرا تایپ اسکریپت :توی این چند سال پروژه های لارج اسکیل با بیزینس مدل های متفاوتی رو با جاوا اسکریپت پیاده سازی کردم که آخرین پروژه ی من برای اسفند 98 ، اپلیکیشن ری اکت نیتیو سایت بانی مد بود. ( که حتما راجب چالش های یه اپلیکیشن واقعی با ایده های خلاقانه BI و تیم مارکتینگ اون براتون مینویسم ) خب وقتی پروژه از یه حدی بزرگ تر میشه، ( جدای اینکه چند نفر روی اون کار میکنن !! ) readable بودن یا خوانایی کد برای خود برنامه نویس هم یکم دشوار میشه یا ورودی / خروجی توابع ، نوع متغییر ها، اصلا اینا به کنار ، اون Hint ویژوال استودیو کد از کار میوفته و قاطی میکنه :))  و خلاصه یه جورایی دوست داریم سریعتر پروژه رو تموم کنیم و هرچه جلوتر میریم ریفکتور کردن کد برامون سخت تر میشه و یه جورایی آدم هم بی حوصله تر میشه ( یعنی بارها شده اواخر پروژه که رسیده، برای اینکه ببینم یه ماژول چه پراپس هایی میتونه دریافت کنه، دست به دامن راه هایی مختلفی از جمله مرور مرتب داکیومنت خود ماژول شدم ). پس فهمیدیم یه جورایی قراره به خودمون کمک کنه و قراره راحت تر کد بزنیم ولی اینم قبول دارم تحمل کردن یه سری امکانات برای ما JS دولوپرها که آزادی بیان در تعریف متغییرهارو داشتیم یکم سخته. ( ولی خب همه میگن خیلی باحال میشه بعد یه مدت. بریم ببینیم چی میشه دیگه :)) ).خب تایپ اسکریپت چیکار میکنه ؟ یعنی واسمون کد میزنه ؟؟احتمالا شما هم اسم Superset رو شنیدید. ولی خب سوپرست یعنی چی ؟ TypeScript is a superset of JavaScript, meaning it&#x27;s a layer around JS with more methods and that makes you follow a certain way of development that you don&#x27;t have to otherwise in vanilla (like having to set the types of your variables).خب من همین متن از مقاله ی مدیوم رو براتون ترجمه میکنم :تایپ اسکریپت یک سوپرست برای جاوا اسکریپت است. به این معنی که یک لایه روی جاوا اسکریپت میباشد که یک سری متد اضافه تر دارد که به شما این امکان را میدهد که راه و روش اصلی یا خاص توسعه نرم افزار را دنبال کنید و نیازی به وجود Vanilla نداشته باشید (مثل نیاز به تعریف نوع برای متغیرها).بزن بریم سر اصل مطلب، حوصلمون سر نره !!یادتون باشه که یادگیری تایپ اسکریپت نیاز به دانش نسبتا خوبی از جاوا اسکریپت داره پس اگر جاوا اسکریپت رو بلدید، سریع NodeJS رو اگه نصب ندارید، از سایت رسمی خودش، نسخه ی LTS رو متناسب با سیستم عامل خودتون نصب کنید و با دستور زیر، TypeScript رو به صورت گلوبال به وسیله NPM نصب کنید.npm install typescript -g خب بعد از نصب کامل شما میتونید با دستور زیر ورژن نصب شده رو مشاهده کنید :tsc --versionبه همین راحتی پا گذاشتیم تو دنیای تایپ ها و آزادی جاوا اسکریپت  رو فدای راحتی در کدنویسی و توسعه ی پروژه کردیم.واسه بهتر شدن :این اولین تجربه من برای مقاله نوشتنه، اگه هر ایرادی در مقالات دیدین میتونید همینجا نظر بدین و اگر میخواین بیشتر با من آشنا بشید میتونیم از اینجا باهم در تماس باشیم. و برای حمایت از ما میتونید اون رو لایک کنید ❤️. یا برای دوستای خودتون که قصد دارن یاد بگیرن اون رو بفرستید ?.بریم هِلو ورلد رو بنویسیم دیگه :زود، تند، سریع یه پروژه با دستور زیر درست کنید :npm init testTs --yesبعد یه فایل app.ts رو توی پروژه بسازید و در خط اول اون بنویسید :console.log(&#039;Hello types world&#039;);بعد توی ترمینال با دستور زیر اون رو به جاوا اسکریپت ترنسپایل کنید :tsc app.tsحتما میخوای بپرسی ترنسپایل چیه ؟ خب از اونجایی که گفتم تایپ اسکریپت یک لایه بر روی جاوا اسکریپت هست، پس نیازه کدها به جاوا اسکریپت ترجمه بشه. دقت کنید  کدها توسط ترنسپایلر خود تایپ اسکریپ به جاوا اسکریپت ترجمه میشه و در نهایت ما از فایل App.js استفاده میکنیم، دقیقا مثل تصویر زیر :تبدیل کدهای تایپ اسکریپت به جاوا اسکریپت از طریق Transpilerو اما نکته های پایانی این قسمت :اول از همه چیز امیدوارم توضیحات مفید باشه، و تا جایی که تونستم با نگارش روان نوشتم که حوصله ی شما سر نره و بتونید با لذت، TypeScript رو یاد بگیرید.دوم اینکه باعث افتخاره که انتقادات و پیشنهادات شمارو بخونم و بتونم با کمک شما کیفیت مقالات رو بالاتر ببرم.سومین مورد هم منو میتونید با @Mgoldast در اینستاگرام / لینکدین و توییتر دنبال کنید حتما من هم شمارو دنبال میکنم و سعی میکنم از تجربیات ارزشمند شما استفاده کنم.قسمت دوم مهاجرت به تایپ‌اسکریپت :  https://virgool.io/@mgoldast/%D9%85%D9%87%D8%A7%D8%AC%D8%B1%D8%AA-%D8%A7%D8%B2-%D8%AC%D8%A7%D9%88%D8%A7%D8%A7%D8%B3%DA%A9%D8%B1%DB%8C%D9%BE%D8%AA-%D8%A8%D9%87-%D8%AA%D8%A7%DB%8C%D9%BE%D8%A7%D8%B3%DA%A9%D8%B1%DB%8C%D9%BE%D8%AA-%D8%AF%D8%B1-%D8%B3%D8%A7%D9%84-99-%D9%82%D8%B3%D9%85%D8%AA-%D8%AF%D9%88%D9%85-cso6oekh1sge حال دلتون خوش.محمد گلدست / هشتم فروردین ماه 1399</description>
                <category>محمد گلدست | Mohammad Goldast</category>
                <author>محمد گلدست | Mohammad Goldast</author>
                <pubDate>Sat, 28 Mar 2020 13:48:32 +0430</pubDate>
            </item>
            </channel>
</rss>