在Typescript中,当将一个接口类型的变量传递给期望不同接口类型的参数的函数时,我遇到了以下好奇。
让我们声明两个接口,一个用于Fruit
,另一个用于Car
:
interface Fruit { name: string }
interface Car { name: string, wheels: number }
现在,让我们声明一个方法,它应该只对Fruit
做一些事情:
function fruitOnly( paramFruit: Fruit ): void {
console.log( paramFruit.name + " is a fruit!" );
}
最后,让我们测试一下:
let car: Car = { name: "Carrie the Car", wheels: 4 };
fruitOnly( car );
结果:
Carrie the Car is a fruit!
问题:为什么我没有收到关于car
不属于Fruit
类型的警告? (尝试将其作为参数传递给fruitOnly( paramFruit: Fruit )
?
我的印象是,TypeScript的重点是帮助我不传递错误类型的参数?我假设这个原因是两个接口碰巧都有name
属性。是否有解决方法,或者这是预期的行为?
期望的行为:我想得到一个警告,我将错误的类型传递给函数。