通過(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 ''
}
}