6
interface test{
foo(boo:string);
}
class coo implements test{
foo(){
}
}
功能簽名playGround 雖然功能簽名不是作爲接口 說,這不會產生和錯誤,接口的預期的行爲是強迫簽名..TS接口不強迫實施者
爲什麼這種行爲?
謝謝
interface test{
foo(boo:string);
}
class coo implements test{
foo(){
}
}
功能簽名playGround 雖然功能簽名不是作爲接口 說,這不會產生和錯誤,接口的預期的行爲是強迫簽名..TS接口不強迫實施者
爲什麼這種行爲?
謝謝
這很有趣。 TypeScript團隊非常聰明,他們決定故意這樣做。
的想法是,如果你的函數可以在不被傳遞參數正常運行,它可以安全地忽略參數,並滿足該接口。這意味着你可以替代你的實現而不必更新所有的調用代碼。
接口確保參數傳遞在所有情況下,你是消費的界面 - 讓您得到的呼叫者類型檢查,它實際上並不重要,你的具體類不需要任何參數。
我認爲這是太明顯是一個錯誤..等待,如果有人有另外一個答案,然後生病標誌着答案..謝謝 –
更新基於來自打字稿團隊反饋。 – Fenton
謝謝,但對我來說,我寧願有參數檢查,以確保正確的實施,並可以爭辯說,如果我有一個函數a(arg1)不在界面..在一個類可以說..它不會被調用沒有arg1,除非使用'?'不需要arg1。 .. –