5.接口-屬性炼彪、函數(shù)吐根、索引和類(lèi)

接口的作用

在面向?qū)ο蟮木幊讨校涌谑且环N規(guī)范的定義辐马,它定義了行為和動(dòng)作的規(guī)范佑惠, 在程序設(shè)計(jì)里面,接口起到了限制和規(guī)范的作用
接口定義了某一批類(lèi)所需要遵守的規(guī)范,接口不關(guān)心這些類(lèi)的內(nèi)部狀態(tài)數(shù)據(jù)膜楷,不關(guān)心類(lèi)方法里面實(shí)現(xiàn)的細(xì)節(jié)旭咽,它只規(guī)定這批類(lèi)里面必須提供某些方法,
提供這些方法的類(lèi)就可以滿足實(shí)際需要

接口的類(lèi)型: 屬性赌厅、函數(shù)穷绵、可索引和類(lèi)等;

1. 屬性接口

interface FName {
    fName: string;
    sName: string
}


function say(foo:FName):string {
    return `我的名字叫 ${foo.fName + foo.sName}`;
}

// 正確的  傳入的參數(shù)需要符合接口的定義
console.log(say({fName: '胡', sName:'火鍋'}));

let bar = {
    fName: '胡',
    sName:'火鍋',
    age: 4
}

// 正確的, 定義在外的對(duì)象
console.log(say(bar));
// 錯(cuò)誤
// console.log(say({firstName: '胡', secondName:'火鍋', age: 4}));
可選屬性
interface  FName {
    fName: string;
    sName: string;
    age?:number; // 可選的屬性
}

function SayName(foo:FName):string {
    return `我的名字叫 ${foo.fName + foo.sName}`;
}

console.log(SayName({fName: '胡', sName:'火鍋', age: 4}));
console.log(SayName({fName: '胡', sName:'火鍋'}));

2. 函數(shù)接口

對(duì)函數(shù)傳入的參數(shù)及返回值進(jìn)行約束

interface Say {
    // 函數(shù)的參數(shù)               函數(shù)的返回值
    (fname:string, age: number):string
}

// 正確的
const speak:Say = function (fname:string, age:number):string {
    return `我的名字${fname}, 年齡為${age}`;
}

const say:Say = (fname:string, age:number):string => {
    return `我的名字${fname}, 年齡為${age}`;
}



// 函數(shù)接口中的可選參數(shù)
/*
interface Say {
    (fname: string, age?: number):string
}
// 如果age 不傳值會(huì)變成undefined
const speak:Say = function (fname:string, age?:number):string {
    return `我的名字${fname}, 年齡為${age}`;
}

const say:Say = (fname:string, age?:number):string => {
    return `我的名字${fname}, 年齡為${age}`; 
}
*/

3. 可索引接口

對(duì)數(shù)組特愿、對(duì)象的約束

數(shù)組的約束
interface ArrIndex {
    [index: number]:string
}

let arr:ArrIndex = ['1', '2'];
對(duì)象的約束
interface OPropName {
    [propName: string]:string
}

let obj:OPropName = {
    1: 'a'
}

3. 類(lèi)類(lèi)型接口

對(duì)類(lèi)的約束 (類(lèi)似抽象類(lèi))

// 回顧 抽象類(lèi)
/*
abstract class Animal {
    abstract fname:string; // 抽象屬性
    abstract eat(food:string):void // 抽象方法
}

class Dog extends Animal {
    fname:string;
    constructor(n:string) {
        super();
        this.fname = n;
    }
    eat(food:string) {
        console.log(`${this.fname}喜歡吃${food}`)
    }
}
*/

// 定義類(lèi)類(lèi)型接口

interface Animal {
    fname:string;
    eat(food:string):void
}

class Dog implements Animal {
    fname:string;
    constructor(n:string) {
        this.fname = n;
    }
    eat(food:string) {
        console.log(`${this.fname}喜歡吃${food}`)
    }
}

let dog = new Dog('可樂(lè)');

console.log(dog);
dog.eat('胡蘿卜');
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末仲墨,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子揍障,更是在濱河造成了極大的恐慌目养,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,627評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件毒嫡,死亡現(xiàn)場(chǎng)離奇詭異癌蚁,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)兜畸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)努释,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人咬摇,你說(shuō)我怎么就攤上這事伐蒂。” “怎么了肛鹏?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,346評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵逸邦,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我在扰,道長(zhǎng)缕减,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,097評(píng)論 1 300
  • 正文 為了忘掉前任健田,我火速辦了婚禮,結(jié)果婚禮上佛纫,老公的妹妹穿的比我還像新娘妓局。我一直安慰自己,他們只是感情好呈宇,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,100評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布好爬。 她就那樣靜靜地躺著,像睡著了一般甥啄。 火紅的嫁衣襯著肌膚如雪存炮。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,696評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音穆桂,去河邊找鬼宫盔。 笑死,一個(gè)胖子當(dāng)著我的面吹牛享完,可吹牛的內(nèi)容都是我干的灼芭。 我是一名探鬼主播,決...
    沈念sama閱讀 41,165評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼般又,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼彼绷!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起茴迁,我...
    開(kāi)封第一講書(shū)人閱讀 40,108評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤寄悯,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后堕义,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體猜旬,經(jīng)...
    沈念sama閱讀 46,646評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,709評(píng)論 3 342
  • 正文 我和宋清朗相戀三年胳螟,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了昔馋。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,861評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡糖耸,死狀恐怖秘遏,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情嘉竟,我是刑警寧澤邦危,帶...
    沈念sama閱讀 36,527評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站舍扰,受9級(jí)特大地震影響倦蚪,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜边苹,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,196評(píng)論 3 336
  • 文/蒙蒙 一陵且、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧个束,春花似錦慕购、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,698評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至阱表,卻和暖如春殿如,著一層夾襖步出監(jiān)牢的瞬間贡珊,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,804評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工涉馁, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留门岔,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,287評(píng)論 3 379
  • 正文 我出身青樓谨胞,卻偏偏與公主長(zhǎng)得像固歪,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子胯努,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,860評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容