代码在函数中使用不同的参数时工作。类如何在打字稿中起作用?
interface icar {
getcar(name: string, age: string): void;
}
class Car implements icar{
getcar() {
console.log('anything');
}
}
var newCar:any = new Car();
newCar.getcar('name');
答案 0 :(得分:0)
interface
的实现者可以自由接受更少的参数,而不是接口定义的参数。原因很简单,函数可能不想首先使用参数的值,因此省略它并不会改变函数的工作方式。传递比定义参数更多的参数也不会导致运行时错误。此外,该函数可能在内部使用arguments
而不是函数签名中的参数; Typescript允许省略参数的另一个原因。
但是,函数的调用者必须传递接口签名中定义的参数。无论具体实现是否使用参数,如果调用者没有遵守定义的接口,那么实现 的工作就不能保证。
Typescript不会在newCar.getcar('name')
上引发错误的原因是您已使用:any
覆盖类型推断,这会导致Typescript暂停{{1}上的所有类型检查}}。删除newCar
和Typescript会抱怨参数数量不匹配。