المسارات
/
TypeScript
TypeScript
/
التمارين
/
مرحبًا بالعالم
مرحبًا بالعالم

مرحبًا بالعالم

تمرين تعليمي

مقدمة

سيجعلك «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 تمارين، وإرشاد بشري حقيقي، وكل ذلك مجانًا.