تایپاسکریپت - null در مقابل undefined
راهنمای کدنویسی تایپاسکریپت بیان میکند
از تعریفنشده استفاده کنید. از null استفاده نکنید
بعد از خواندن مقالهای دیگر درباره ECMAScript که طرفدار null به جای undefined است، کنجکاو شدم که آیا دلیل مایکروسافت یا تیم TypeScript برای این تصمیم مشخص است یا خیر؟
پاسخ شماره ۱
برای دستورالعملها نیازی به توجیه نیست، این الزام میتواند بهصورت تصادفی انتخاب شود تا پایگاه کد یکدست باقی بماند.
در مورد این دستورالعمل، undefined برای تایپ کردن تعداد بیشتری کاراکتر نیاز دارد اما نیازی به اختصاص صریح به متغیر یا ویژگی nullable ندارد:
class Foo {
bar: number|undefined;
}
function foo(bar: number|undefined) {}
در مقابل
class Foo {
bar: number|null = null;
}
function foo(bar: number|null = null) {}
همچنین، بررسی نوع مقدار null در زمان اجرا کمتر راحت است زیرا typeof val === 'object' هم برای مقدار null و هم برای مقدار شیء درست است، در حالی که برای undefined، مقدار typeof val === 'undefined' است.
قانون TSLint مرتبطی وجود دارد که به این موضوع میپردازد، no-null-keyword.
پاسخ شماره ۲
چند ماه پیش تحقیقاتی انجام دادم و به این نتیجه رسیدم که باید به undefined با استفاده از قانون tslint 'no-null-keyword' اولویت داده شود.
من سعی کردم کدبیس خود را تغییر دهم و با برخی مشکلات برخورد کردم. چرا؟ چون دارم از یک API استفاده میکنم که برای فیلدهای خالی مقدار null برمیگرداند.
من به خاطر قانون TSLint مربوط به سهبرابر مساویها سختی کشیدم.
if (returnedData === undefined) // will be false because returnedData is nullکه به شما ۲ گزینه میدهد:
۱) چند پارامتر به قوانین سهبرابر علامت مساوی خود اضافه کنید.
«سهمساوی»: [true، «اجازه-بررسی-تهی»] و انجام دهید اگر (returnedData == null)
اجازه بررسی تهی اجازه "==" برای null
۲) به جای آن از If (returnedData) استفاده کنید، اما این بررسی میکند که مقدار null، undefined، رشته خالی یا صفر باشد
