断言的意义??

来源:7-3 答疑解惑:类型断言有什么好处?

zhangkaili

2021-12-26

// 5 Customer类
class Customer {
// 多态在koa服务器后端大中项目中的使用
// 父类的引用接受不同类的子类对象
rentVechile(vechile: Vechile) {
vechile.calculateRent();//
if (vechile instanceof Vechile) {
// 父类对象变量断言成子类后,调用子类独有方法
(vechile as Bus).checkIsOverNum(true)// S94
}
}
}

let cust = new Customer()
cust.rentVechile(new Car(“本田”, “京G113”, 35, 400, “1”)) ==>老师,Car实例没有checkIsOverNum方法,那这样断言的意义是什么?
cust.rentVechile(new Bus(“大巴”, “京G115”, 89, 700, 16))

写回答

1回答

keviny79

2021-12-27

理解反了,如果所有子类都有的方法和属性,就不用断言了,直接写到父类,子类重写后,使用vechile变量来调用,而在这个rentVechile方法中,充分用到了多态的好处,但是如果偶尔这样的rentVechile方法里用到某个子类独有的方法,那么就需要把 父类对象变量 断言成子类对象后再去调用

0
2
keviny79
回复
zhangkaili
有时在函数重载的实现签名函数中 确实可以用类型守卫来判断类型,两者可共存
2021-12-31
共2条回复

晋级TypeScript高手,成为抢手的前端开发人才

轻松驾驭 TypeScript 高级用法, 突破前端成长瓶颈

871 学习 · 425 问题

查看课程