TS接口不强制实现者使用功能签名

Bas*_*adi 8 interface signature typescript

interface test{
    foo(boo:string);
}
class coo implements test{
    foo(){

    }
}
Run Code Online (Sandbox Code Playgroud)

playGround 中,虽然函数签名不像接口所说的那样但这并不会生成和错误,接口的预期行为是强制签名.

为什么会这样?

谢谢

Fen*_*ton 5

这很有趣。TypeScript 团队是非常聪明的家伙,他们决定故意这样做。

这个想法是,如果您的函数可以在不传递参数的情况下正确运行,则它可以安全地忽略该参数并满足接口。这意味着您可以替换您的实现而无需更新所有调用代码。

接口确保在您使用接口的所有情况下都传递参数 - 因此您可以对调用者进行类型检查,并且您的具体类不需要任何参数实际上并不重要。

接口函数参数未强制执行