在这里我可能会丢失一些明显的东西,但是如果我做类似的事情
interface ITest {
f(a: string): number
}
class Test implements ITest {
f() {
return 1
}
}
尽管f
的实现没有正确的签名,编译器还是对此感到非常满意。
我在做什么错了?
答案 0 :(得分:1)
简而言之,这是该方法的有效声明,因为它可以安全地忽略其参数,因为它们没有在内部使用。
由于总是从调用者的角度读取函数签名-它会因潜在的JS错误而失败-即尝试使用不存在的变量,以防您尝试这样做。
此行为是设计使然存在的,您可以在why are functions with fewer parameters assignable to functions that take more parameters下的Typescripts常见问题页面中了解有关此行为的全部动机。