type Item = {
left?: { photoSrc: string };
};
type ItemRequired = {
left: { photoSrc: string };
};
const item: Item = {} as any;
if (item.left) {
const itemRequired: ItemRequired = item; // fails. Typescript still says left may be undefined
// I'd like Typescript to know that field left is truthy
}
Saya tahu tentang pelindung tipe yang ditentukan pengguna. Misalnya.
function isFish(pet: Fish | Bird): pet is Fish {
return (pet as Fish).swim !== undefined;
}
Pertanyaan saya:
- Mengapa TypeScript tidak dapat menyimpulkan bahwa
left
tidak dapat ditentukan? - Apakah itu berarti saya perlu membuat fungsi type guard untuk setiap variasi tipe yang perlu saya periksa? Bukankah ada cara yang lebih sederhana? Misalnya. Saya berharap ketika berada di dalam cakupan pemeriksaan if yang membuktikan bahwa bidang
left
tidak dapat ditentukan, saya berharap TypeScript mengetahuinya.
Ini sepertinya kasus yang sangat umum, tetapi saya tidak dapat menemukan jawabannya, mohon maaf jika ada.