سيجعلك «Hello, World!» تكتب بعض الكود بلغة TypeScript وتتعرّف على سير العمل في Exercism. إكماله يفتح بقية مسار TypeScript.
شاهد فيديو «مقدمة إلى Hello, World» للبدء 👇
التمرين التمهيدي الكلاسيكي. قل فقط "Hello, World!".
"Hello, World!" هو البرنامج الأول التقليدي لمن يبدأ تعلّم البرمجة بلغة أو بيئة جديدة.
الأهداف بسيطة:
إذا سار كل شيء على ما يُرام، ستكون جاهزًا لجلب تمرينك الحقيقي الأول.
اتّبع تعليمات الإعداد الخاصة بـ TypeScript لتثبيت التبعيات اللازمة:
https://exercism.org/docs/tracks/typescript/installation
ثبّت تبعيات التمرين:
$ yarn install
نفّذ الاختبارات بالأمر:
$ yarn test
في كثير من مجموعات الاختبارات، تُتخطّى جميع الاختبارات باستثناء الأول.
بمجرد أن ينجح اختبار، يمكنك إلغاء تخطّي الاختبار التالي
بتغيير xit إلى it.
يقدّم هذا القسم دليلًا خطوة بخطوة لحل هذا التمرين.
يتضمّن هذا التمرين ملفين:
الملف الأول هو حيث ستكتب الكود. والثاني هو حيث تُعرَّف الاختبارات.
ستتحقق الاختبارات ممّا إذا كان الكود يفعل الشيء الصحيح. لست بحاجة إلى القدرة على كتابة مجموعة اختبارات من الصفر، لكن من المفيد أن تفهم كيف يبدو الاختبار، وما الذي يفعله.
افتح ملف الاختبار، 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)
وينجح!
سجّل في Exercism لتتعلّم وتتقن TypeScript عبر 108 تمارين، وإرشاد بشري حقيقي، وكل ذلك مجانًا.