Null (Null)
در تایپ اسکریپت، «Null» یعنی «هیچ چیز عمدی». همچنین «Undefined» یعنی «هنوز مقدار نگرفته». با تنظیم strictNullChecks رفتارها دقیق تر می شوند و خطاها زودتر دیده می شوند.
انواع Null و Undefined
هر دو «نوع اولیه (Primitive)» هستند. بنابراین می توانند در یونین ها کنار string و دیگر انواع بیایند.
let value: string | undefined | null = null;
value = 'hello';
value = undefined;
هشدار: وقتی strictNullChecks فعال است، باید undefined را صریحاً در نوع بیاوری.
زنجیره اختیاری (Optional Chaining)
با عملگر ?. امن به ویژگی های شاید-نباشند دسترسی بگیر. اگر نباشند، نتیجه undefined می شود.
interface House {
sqft: number;
yard?: {
sqft: number;
};
}
function printYardSize(house: House) {
const yardSize = house.yard?.sqft;
if (yardSize === undefined) {
console.log('No yard');
} else {
console.log(`Yard is ${yardSize} sqft`);
}
}
let home: House = {
sqft: 500
};
printYardSize(home);
ادغام نالی (Nullish Coalescing)
با عملگر ?? فقط وقتی مقدار null یا undefined است، جایگزین بده.
function printMileage(mileage: number | null | undefined) {
console.log(`Mileage: ${mileage ?? 'Not Available'}`);
}
printMileage(null);
printMileage(0);
علامت تعجب! (Null Assertion)
عملگر ! به کامپایلر می گوید: «این مقدار نال نیست». بااحتیاط استفاده کن.
function getValue(): string | undefined {
return 'hello';
}
let value2 = getValue();
console.log('value length: ' + value2!.length);
دسترسی به آرایه و Undefined
با گزینه noUncheckedIndexedAccess می توانی نوع دسترسی آرایه را دقیق تر کنی.
let array: number[] = [1, 2, 3];
let first = array[0];
گام های عملی کار با Null
- ابتدا
strictNullChecksرا روشن کن. - سپس یونین های شامل Null را تعریف کن.
- بعد، از
?.و??برای دسترسی امن استفاده کن.
برای ادامه، صفحه کلیدواژه keyof و صفحه انواع کاربردی را ببین. همچنین یک لنگر داخلی با کلیدواژه Null نگه می داریم.
جمع بندی سریع
- Null یعنی «هیچِ عمدی»، Undefined یعنی «مقدار نداده ایم».
- با
strictNullChecksمدیریت دقیق تر می شود. ?.برای دسترسی امن استفاده کن.??فقط نال/آندیفایند را جایگزین می کند.!خطرناک است؛ کم استفاده کن.