为何子类对象赋值给父类,还不报错?为什么,什么原理??求助
class a {
a: String;
}
class b extends a {
b: String;
}
class c extends b {
c: String;
}
let p1: a;
let p2: b;
let p3: c;
p2 = { 'a': 'String', 'b': 'String' }
p3 = { 'a': 'String', 'b': 'String', 'c': 'String' }
// p1 = p2
p2 = p3
console.log(p1,p2,p3)
看一下这一章的文档 类型兼容性
这里要检查
y
是否能赋值给x
,编译器检查x
中的每个属性,看是否能在y
中也找到对应属性。 在这个例子中,y
必须包含名字是name
的string
类型成员。y
满足条件,因此赋值正确。当你在
x
中用location
的时候typescript
就会给你报错提醒