تایپاسکریپت - چرا تحلیل جریان کنترل به if else اعمال میشود و به عملگر سهتایی نه؟
هنگام نوشتن این کد:
const a = 1;
const b = 'string';
let test;
if(true) {
test = a
} else {
test = b; // Unreachable code detected
}
test; // number
محل بازی تایپاسکریپت
تایپاسکریپت به درستی کد غیرقابل دسترسی را تشخیص میدهد و نوع test را به number به درستی استنتاج میکند.
با این حال، این برای عملگر سهتایی صدق نمیکند:
const a = 1;
const b = 'string';
const test = true ? a : b; // 1 | "string"
محل بازی تایپاسکریپت
در این حالت TypeScript هیچ خطایی نمیدهد و تشخیص نمیدهد که test میتواند فقط از نوع 1 باشد. چرا اینطور نیست؟