`truthy` و `falsy` في TypeScript

`truthy` و `falsy` في TypeScript

في هذه المقالة، سنشرح truthy و falsy في TypeScript۔

YouTube Video

truthy و falsy في TypeScript

مفاهيم truthy و falsy في TypeScript تلعب دورًا مهمًا جدًا في عبارات الشرط في البرامج۔ هنا، سنشرح هذه المفاهيم بالتفصيل وكيف يتم استخدامها فعليًا۔ علاوة على ذلك، نقدم أمثلة محددة في TypeScript لفهم كيفية التعامل مع قيم truthy و falsy۔

ما هي truthy و falsy؟

في JavaScript و TypeScript، يتم تقييم أي قيمة كـ true (true) أو false (false) في تعبير شرطي۔ يتم تصنيف هذه القيم منطقيًا كـ truthy أو falsy۔

  • truthy تشير إلى القيم التي يتم تقييمها كـ true في التعبيرات الشرطية۔
  • falsy تشير إلى القيم التي يتم تقييمها كـ false في التعبيرات الشرطية۔

في TypeScript، يتم التعامل مع القيم التالية كـ falsy

  1. الرقم 0
  2. "" (سلسلة نصية فارغة)

كل القيم الأخرى يتم التعامل معها كـ truthy۔

أمثلة محددة على truthy و falsy

 1// Examples of falsy values
 2console.log("0 is", Boolean(0) ? "truthy" : "falsy");
 3console.log('"" is', Boolean("") ? "truthy" : "falsy");
 4console.log("null is", Boolean(null) ? "truthy" : "falsy");
 5console.log("undefined is", Boolean(undefined) ? "truthy" : "falsy");
 6console.log("NaN is", Boolean(NaN) ? "truthy" : "falsy");
 7
 8// Examples of truthy values
 9console.log("1 is", Boolean(1) ? "truthy" : "falsy");
10console.log('"hello" is', Boolean("hello") ? "truthy" : "falsy");
11console.log("[] is", Boolean([]) ? "truthy" : "falsy");
12console.log('" " (space) is', Boolean(" ") ? "truthy" : "falsy");

الجمل الشرطية باستخدام truthy و falsy

تُستخدم مفاهيم truthy و falsy كثيرًا في الشرطيات والحلقات۔ على سبيل المثال، في عبارات if أو حلقات while، يمكنك استخدام هذه القيم مباشرة لتقييمات شرطية بسيطة۔

 1// Checking if the length of the array is 0
 2let items: string[] = [];
 3
 4if (items.length) {
 5    console.log("The array is not empty");
 6} else {
 7    console.log("The array is empty");
 8}
 9
10// Checking if the input value is empty
11let input = "";
12
13if (input) {
14    console.log("Input has value");
15} else {
16    console.log("Input is empty"); // This will be executed
17}

التعامل مع القيم falsy باستخدام ?? (Nullish Coalescing) و || (OR المنطقي)

في TypeScript، هناك العديد من العوامل المفيدة عند التعامل مع قيم falsy۔ على وجه الخصوص، يتم استخدام عامل Nullish Coalescing (??) وعامل OR المنطقي (||) بشكل شائع۔

|| (أو المنطقي)

يُستخدم عامل OR المنطقي لاستبدال القيم falsy بقيمة افتراضية۔ ومع ذلك، يتم استهداف جميع قيم falsy (ليس فقط null أو undefined، بل أيضًا 0، ""، وما إلى ذلك)۔

1let username = "";
2let displayName = username || "Guest"; // Since username is empty, "Guest" is assigned
3
4console.log(displayName); // "Guest"

??(Nullish Coalescing)

عامل Nullish Coalescing يطبق قيمة افتراضية فقط على القيم null أو undefined، ويترك القيم falsy الأخرى (مثل 0 أو "") دون تغيير۔

1let username2 = "";
2let displayName2 = username2 ?? "Guest";
3// The empty string is retained
4// since username2 is not null or undefined
5
6console.log(displayName2); // ""

المزالق المتعلقة بـ truthy و falsy

نقطة رئيسية يجب الانتباه إليها عند فهم truthy و falsy هي أن القيم غير المقصودة قد تُعامل كـ falsy.۔ على سبيل المثال، 0 وسلاسل النصوص الفارغة "" هي قيم صالحة، لكنها تُعتبر falsy في العبارات الشرطية، مما قد يؤدي إلى تقييمات غير صحيحة.۔

1let score = 0;
2
3if (score) {
4    console.log("You have a score!"); // This will not be executed
5} else {
6    console.log("No score available"); // This will be executed
7}

في مثل هذه الحالات، يتيح لك استخدام عوامل المقارنة الصارمة التمييز بدقة بين القيم مثل 0 وfalse۔

1let score = 0;
2
3if (score === 0) {
4    console.log("Score is zero"); // Correctly evaluated
5}

المخاطر المرتبطة بالقيم falsy وNaN

NaN يتطلب معالجة خاصة لأنه لا يساوي أي قيمة، بما في ذلك نفسه، عند استخدام عوامل المقارنة۔

1console.log("NaN === NaN:", NaN === NaN); // false

لذلك، من الأكثر أماناً استخدام Number.isNaN() للكشف بدقة عن NaN۔

 1// Bad Example
 2let value = parseInt("0");
 3if (!value) {
 4    console.log("Value is NaN"); // Incorrectly treats 0 as NaN
 5}
 6
 7// Good Example
 8let value2 = parseInt("hello");
 9if (Number.isNaN(value2)) {
10    console.log("Value is NaN"); // Correctly identifies NaN
11}

ولهذا، فإن NaN لا يساوي حتى نفسه، لذا فإن المقارنات مع NaN تعود دائماً بـ false۔ باستخدام Number.isNaN() بدلاً من ذلك، يمكنك إجراء فحوصات أكثر موثوقية۔

الخاتمة

مفاهيم truthy و falsy في TypeScript مريحة للغاية، لكن يجب أن تكون حذراً مع بعض القيم، خاصة 0 وسلاسل النصوص الفارغة.۔ عند استخدام هذه القيم في الفحوصات الشرطية، فإن استخدام المقارنات الصارمة (===) أو عامل Nullish Coalescing (??) بدلاً من المقارنات الفضفاضة (==) يمكن أن يساعد في تجنب السلوك غير المتوقع۔

يمكنك متابعة المقالة أعلاه باستخدام Visual Studio Code على قناتنا على YouTube.۔ يرجى التحقق من القناة على YouTube أيضًا.۔

YouTube Video