interface test{
foo(boo:string);
}
class coo implements test{
foo(){
}
}
playGround では、 これは生成されず、エラーが発生しますが、関数の署名はインターフェイスが示すとおりではありません。インターフェイスの予想される動作は、署名を強制することです..
なぜこの動作ですか?
ありがとう
interface test{
foo(boo:string);
}
class coo implements test{
foo(){
}
}
playGround では、 これは生成されず、エラーが発生しますが、関数の署名はインターフェイスが示すとおりではありません。インターフェイスの予想される動作は、署名を強制することです..
なぜこの動作ですか?
ありがとう
これは面白い。TypeScript チームは非常に頭が良く、意図的にこれを行うことにしました。
関数が引数を渡されなくても正しく動作できる場合、引数を安全に無視してインターフェースを満たすことができるという考え方です。これは、すべての呼び出しコードを更新することなく、実装を置き換えることができることを意味します。
インターフェイスは、インターフェイスを使用しているすべてのケースで引数が確実に渡されるようにします。そのため、呼び出し元で型チェックが行われ、具体的なクラスがパラメーターを必要としないことは実際には問題になりません。