سلام دنیا

سلام دنیا

تمرین آموزشی

مقدمه

«Hello, World!» کاری می‌کند که با TypeScript کمی کد بنویسید و با روند کار Exercism آشنا شوید. تکمیل آن، بقیه‌ی مسیر TypeScript را باز می‌کند.

برای شروع، ویدیوی «آشنایی با Hello, World» ما را تماشا کنید 👇

دستورالعمل‌ها

تمرین مقدماتی کلاسیک. فقط بگویید «Hello, World!».

«Hello, World!» نخستین برنامه‌ی سنتی برای شروع برنامه‌نویسی در یک زبان یا محیط تازه است.

هدف‌ها ساده‌اند:

  • کدی را که در اختیار شما قرار گرفته تغییر دهید تا رشته‌ی «Hello, World!» را تولید کند.
  • مجموعه‌ی تست‌ها را اجرا کنید و مطمئن شوید که موفق می‌شود.
  • راه‌حل خود را ارسال کنید و آن را در وب‌سایت بررسی کنید.

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

راه‌اندازی

برای نصب وابستگی‌های لازم، دستورالعمل‌های راه‌اندازی TypeScript را دنبال کنید:

https://exercism.org/docs/tracks/typescript/installation

پیش‌نیازها

وابستگی‌های تمرین را نصب کنید:

$ yarn install

پاس کردن مجموعه‌ی تست‌ها

تست‌ها را با این دستور اجرا کنید:

$ yarn test

در بسیاری از مجموعه‌تست‌ها، همه‌ی تست‌ها به‌جز تست اول نادیده گرفته شده‌اند.

وقتی یک تست را پاس کردید، می‌توانید با تغییر xit به it تست بعدی را از حالت نادیده درآورید.

آموزش

این بخش راهنمای گام‌به‌گامی برای حل این تمرین است.

این تمرین دو فایل دارد:

  • hello-world.ts
  • hello-world.test.ts

فایل اول جایی است که کد خود را می‌نویسید. فایل دوم جایی است که تست‌ها تعریف شده‌اند.

تست‌ها بررسی می‌کنند که کد شما کار درست را انجام می‌دهد یا نه. لازم نیست بتوانید از صفر یک مجموعه‌تست بنویسید، اما کمک می‌کند بفهمید یک تست چه شکلی است و چه کاری انجام می‌دهد.

فایل تست، یعنی hello-world.test.ts، را باز کنید. درون آن یک تست وجود دارد:

it('says hello world', () => {
  expect(hello()).toEqual('Hello, World!')
})

حالا تست را با دستور زیر در خط فرمان اجرا کنید:

$ yarn test

تست شکست می‌خورد، که منطقی است چون هنوز هیچ کدی ننوشته‌اید.

این شکست چیزی شبیه این است:

    × says hello world (5ms)

  ● Hello World › says hello world

    expect(received).toEqual(expected) // deep equality

    Expected: "Hello, World!"
    Received: "Goodbye, Mars!"

      4 |
      5 |   it('says hello world', () => {
    > 6 |     expect(hello()).toEqual('Hello, World!')
        |                     ^
      7 |   })
      8 |
      9 | })

      at Object.it (hello-world.test.ts:6:32)

و این‌ها همان خط‌های کدی هستند که احتمالاً در فایل hello-world.test.ts ایراد دارند:

خط ششم:

    expect(hello()).toEqual('Hello, World!')
                    ^

پس مشکل از فراخوانی تابع hello() است. می‌بینیم که تست انتظار دارد خروجی 'Hello, World!' باشد، اما در عوض "Goodbye, Mars!" دریافت می‌کند.

حالا بیایید این تابع را در فایل hello-worlds.ts بررسی کنیم:

export function hello(): string {
  return 'Goodbye, Mars!'
}

حالا می‌بینیم که تابع رشته‌ی نادرستی را برمی‌گرداند و همین دلیل شکست تست است. بیایید با تغییر مقدار بازگشتی این را درست کنیم:

export function hello(): string {
  return 'Hello, World!'
}

دوباره تست را اجرا کنید:

 PASS  ./hello-world.test.ts
  Hello World
    √ says hello world (4ms)

و پاس می‌شود!

ویرایش از طریق GitHub این لینک در پنجره یا زبانه‌ی جدیدی باز می‌شود
TypeScript Exercism

آماده‌اید سلام دنیا را شروع کنید؟

در Exercism ثبت‌نام کنید تا TypeScript را همراه با 108 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.