typescript:A 继承了 B,A 中新加了几个 get 属性,一个方法中参数类型是 A,此时传入 B 类型报错,如何修改?

A继承了B, A中新加了几个get 属性,一个方法中参数类型是A,此时传入B类型报错,怎么改呀

class A extends B{}
class B {}
function cat (x:A){}
cat(new B());

阅读 3.2k
2 个回答

你方法中的类型不是 A 吗?哪里就是 B 了。

如果你是想形参是 A,实参是 B,不报错是不可能的。B 类型的变量能兼容A,但是 A 类型的变量不能兼容 B。因为 A 类型的属性能完全覆盖 B 类型的,但是 B 类型由于缺了几个属性,不能覆盖 A 类型的。

说起来有点绕,其实简单点说就是,你设定了形参是 A ,那么传进来的实参就必须要有 A 的所有属性,只能多不能少,而由于 B 没有这些属性,所以不能兼容,当然你能强转。

小兄弟,类不是这样用的,你先去官网看10分钟再回来思考你这个问题吧。ts中文网--类
加油。~~