Ts中形参跟实参类型不一致却不报错的问题

最近开始学了Ts,现在还是对类型有些疑惑,这里定义了两个接口,在函数的形参和调用函数的实参使用。明明两个参数类型不一样但是为什么不会报错呢?


interface UserInfo{
  nickname:string;
  gender:string;
}
interface UserInfo2{
  nickname:string;
  gender:string;
  age:number
}
// 函数形参为UserInfo
function setUser(info:UserInfo){
  ....
}
const userinfo:UserInfo2 = {
  nickname:'user1',
  gender:'male',
  age:50
}
//调用函数时参数类型为UserInfo2
//两个参数类型不一致,但是为什么不会报错呢?
setUser(userinfo) 

ok了解了,ts中还支持类型兼容,学习了