typescript - 如何强制类为函数成员实现具有正确类型签名的接口
问题描述
我可能在这里遗漏了一些非常明显的东西,但是如果我做类似的事情
interface ITest {
f(a: string): number
}
class Test implements ITest {
f() {
return 1
}
}
编译器对它非常满意,尽管f
没有正确的签名。
我究竟做错了什么?
解决方案
简而言之,这是该方法的有效声明,因为它可以安全地忽略其参数,因为它们没有在内部使用。
由于总是从调用者的角度读取函数签名——它会因底层 JS 错误而失败——即尝试使用不存在的变量以防万一。
这种行为是设计而存在的,您可以在 Typescripts FAQ 页面中阅读有关它的全部动机,在为什么具有较少参数的函数可分配给采用更多参数的函数