首页 > 解决方案 > 如何强制类为函数成员实现具有正确类型签名的接口

问题描述

我可能在这里遗漏了一些非常明显的东西,但是如果我做类似的事情

interface ITest {
  f(a: string): number
}

class Test implements ITest {
  f() {
    return 1
  }
}

编译器对它非常满意,尽管f没有正确的签名。

我究竟做错了什么?

标签: typescript

解决方案


简而言之,这是该方法的有效声明,因为它可以安全地忽略其参数,因为它们没有在内部使用。

由于总是从调用者的角度读取函数签名——它会因底层 JS 错误而失败——即尝试使用不存在的变量以防万一。

这种行为是设计而存在的,您可以在 Typescripts FAQ 页面中阅读有关它的全部动机,在为什么具有较少参数的函数可分配给采用更多参数的函数


推荐阅读