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

    }
}

playGround では、 これは生成されず、エラーが発生しますが、関数の署名はインターフェイスが示すとおりではありません。インターフェイスの予想される動作は、署名を強制することです..

なぜこの動作ですか?

ありがとう

4

3 に答える 3

6

これは面白い。TypeScript チームは非常に頭が良く、意図的にこれを行うことにしました。

関数が引数を渡されなくても正しく動作できる場合、引数を安全に無視してインターフェースを満たすことができるという考え方です。これは、すべての呼び出しコードを更新することなく、実装を置き換えることができることを意味します。

インターフェイスは、インターフェイスを使用しているすべてのケースで引数が確実に渡されるようにします。そのため、呼び出し元で型チェックが行われ、具体的なクラスがパラメーターを必要としないことは実際には問題になりません。

インターフェイス関数パラメータが適用されていません

于 2012-10-31T09:13:49.517 に答える