子类型值可以分配给父类型变量,相反,不是吗?我很困惑,如果这是真的,并且文档中说TypeScript中的所有类型都是称为Any类型的单个顶级类型的子类型,那么为什么任何类型值都可以分配给所有其他类型变量?
interface A {
name: string,
}
interface B extends A {
name: string,
age: number,
}
let a: A = {
name: 'pony',
};
let b: B = {
name: 'jack',
age: 10,
};
// a = b; // OK
// b = a; // fail
答案 0 :(得分:0)
您可以将any
类型分配给任何类型,这仅仅是因为使用此类型是TypeScript类型检查机制的退出。这并不意味着它将是正确的代码。只是TS不会抱怨打破多态性规则。
在TypeScript's docs中使用any
有一个很好的解释。