直接给父类型的test赋值子类型的值则报错,但间接通过子类型的变量a给父类型的test赋值则不报错,为什么?另外ts为什么要这样设计?
interface tp1 {
name: string;
}
interface tp2 extends tp1 {
age: number
}
let a = {
name: "dahuang",
age: 20,
}
// 报错类型不符合
let test: tp1 = {
name: "dahuang",
age: 20,
};
// 不报错
let test2:tp1 = a;
在 TypeScript 中,直接定义的子类型(即字面量类型或者接口定义的类型)不能赋值给父类型,是因为这样的子类型并没有被赋予一个名称,而是直接被使用在代码中。这就意味着,如果直接将一个字面量类型或接口定义的类型赋值给一个父类型的变量或参数,就会发生类型不匹配的错误。