Typescript接口和函数参数

时间:2018-04-27 11:41:35

标签: typescript

在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属性。是否有解决方法,或者这是预期的行为?

期望的行为:我想得到一个警告,我将错误的类型传递给函数。

0 个答案:

没有答案