Назад к вопросам
JuniorТеорияЧасто
Что скажет tsc и что произойдёт при запуске программы?
type Cat = { meow: string };
type Dog = { bark: string };
function isCat(pet: Cat | Dog): pet is Cat {
return "bark" in pet;
}
function speak(pet: Cat | Dog) {
if (isCat(pet)) {
console.log(pet.meow.toUpperCase());
}
}
speak({ bark: "woof" });tsc промолчит; при запуске будет TypeError
- Ждать, что tsc заметит неверное тело
isCat: предикату типа tsc верит и не сверяет его с кодом функции. - Ждать, что выведется
undefined:pet.meowравноundefined, и вызов метода у него бросаетTypeErrorраньше любого вывода.
- Как исправить
isCat, чтобы функция выполняла своё обещание? - Когда TypeScript выводит предикат типа сам, без записи
pet is Cat?