typeScript入門(三)接口
阿新 • • 發佈:2018-10-09
返回值 狀態 md5 key index cond 賦值 ava 接口
接口我感覺是很常用的一塊
定義標準:
接口的作用:在面向對象的編程中,接口是一種規範的定義,它定義了行為和動作的規範,在程序設計裏面,接口起到一種限制和規範的作用。接口定義了某一批類所需要遵守的規範,接口不關心這些類的內部狀態數據,也不關心這些類裏方法的實現細節,它只規定這批類裏必須提供某些方法,提供這些方法的類就可以滿足實際需要。 typescrip中的接口類似於java,同時還增加了更靈活的接口類型,包括屬性、函數、可索引和類等。
1)屬性類接口
舉個例子分析下
interface FullName{
firstName:string;
secondName?:string;
}
function printName(name:FullName){
console.log(name.firstName+‘--‘+name.secondName);
}
var obj={
age:20,
firstName:‘張‘,
secondName:‘三‘
};
printName(obj);
註意點如下
一。定義接口用分號(;)隔開。
二。接口內的屬性可以用?來表示這個接口可以不傳
三。當函數調用時,參數不可直接寫用對象,ts會報錯有未知屬性,需像上文一樣先賦值給一個值,函數再調用的時候傳這個值。
2)函數類接口
對方法傳入的參數 以及返回值進行約束
interface encrypt{
(key:string,value:string):string;
}
var md5:encrypt=function(key:string,value:string):string{
return key+‘----‘+value;
}
console.log(md5(‘name‘,‘zhangsan‘));
3)可索引接口
對數組的約束
interface UserArr{
[index:number]:string
}
對對象的約束
interface UserObj{
[index:string]:string
}
其實可以看出來區別就是數組下標時number,但是對象下標就是string。
4)類類型接口
對類的約束 和 抽象類抽象有點相似
interface Animal{
name:string;
eat(str:string):void;
}
class Dog implements Animal{
name:string;
constructor(name:string){
this.name=name;
}
eat(){
console.log(this.name+‘吃糧食‘)
}
}
註意點如下:
一。在interface內的所有屬性或者方法,必須在實現的類中有。
二。interface是類實現接口的方法。
5)接口的拓展
接口可以繼承接口,用extends實現。
一個類既可以繼承(extends)一個類,也可以順便實現(interface)一個接口。
typeScript入門(三)接口