typescript之類與接口

通過(guò)接口,我們可以為對(duì)象定義一種結(jié)構(gòu)和契約,我們還可以把類和接口進(jìn)行結(jié)合,通過(guò)接口,讓類去強(qiáng)制符合某種契約。從某個(gè)方面來(lái)說(shuō),當(dāng)一個(gè)抽象類中只有抽象的時(shí)候,他與接口沒有太大區(qū)別,這個(gè)時(shí)候我們更推薦通過(guò)接口來(lái)定義契約

  • 抽象類編譯后還是會(huì)產(chǎn)生實(shí)體代碼,而接口不會(huì)
  • typescript只支持單繼承,即一個(gè)子類只能有一個(gè)父類,但是一個(gè)類可以實(shí)現(xiàn)多個(gè)接口
  • 接口不能有實(shí)現(xiàn),抽象類可以

implements

在一個(gè)類中使用接口并不是使用extends關(guān)鍵字,而是implements

  • 與接口類似,如果一個(gè)類implements了一個(gè)接口,那么就必須實(shí)現(xiàn)該接口中定義的契約
  • 多個(gè)接口使用 , 分割
  • implements 與 extends 可以同時(shí)存在
interface Ilog{
    getInfo(): string;
}
interface MyProps{
    val: number
}
interface MyState{
    x: number
}
class MyComponents<MyProps,MyState> implements Ilog{
   constructor(props: MyProps,state: MyState){

   }
   getInfo():string{
    return ''
   }
}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容