TypeScript基礎(chǔ)入門 - 接口 - 函數(shù)類型

轉(zhuǎn)載地址

TypeScript基礎(chǔ)入門 - 接口 - 函數(shù)類型

項目實踐倉庫

https://github.com/durban89/typescript_demo.git
tag: 1.0.10

為了保證后面的學(xué)習(xí)演示需要安裝下ts-node,這樣后面的每個操作都能直接運(yùn)行看到輸出的結(jié)果葛峻。

npm install -D ts-node

后面自己在練習(xí)的時候可以這樣使用

npx ts-node src/learn_basic_types.ts
npx ts-node 腳本路徑

接口

TypeScript的核心原則之一是對值所具有的結(jié)構(gòu)進(jìn)行類型檢查。 它有時被稱做“鴨式辨型法”或“結(jié)構(gòu)性子類型化”巴比。 在TypeScript里术奖,接口的作用就是為這些類型命名和為你的代碼或第三方代碼定義契約。

函數(shù)類型

接口能夠描述JavaScript中對象擁有的各種各樣的外形匿辩。 除了描述帶有屬性的普通對象外腰耙,接口也可以描述函數(shù)類型。

為了使用接口表示函數(shù)類型铲球,我們需要給接口定義一個調(diào)用簽名挺庞。 它就像是一個只有參數(shù)列表和返回值類型的函數(shù)定義。參數(shù)列表里的每個參數(shù)都需要名字和類型稼病。如下示例

interface SomeInterface {
  (arg1: string, arg2: string): boolean;
}

這樣定義后选侨,我們可以像使用其它接口一樣使用這個函數(shù)類型的接口。 下例展示了如何創(chuàng)建一個函數(shù)類型的變量然走,并將一個同類型的函數(shù)賦值給這個變量援制。

let someFunc: SomeInterface
someFunc = function (arg1: string, arg2: string) {
    const res = arg1.search(arg2)
    return res > -1;
}
console.log(someFunc('weast','east'));

運(yùn)行后得到的結(jié)果如下

true

對于函數(shù)類型的類型檢查來說,函數(shù)的參數(shù)名不需要與接口里定義的名字相匹配芍瑞。 比如晨仑,我們使用下面的代碼重寫上面的例子:

let someFunc2: SomeInterface;
someFunc2 = function (x: string, y: string): boolean {
    const res = x.search(y);
    return res > -1;
}
console.log(someFunc2('weast', 'east'));

運(yùn)行后得到的結(jié)果如下

true

函數(shù)的參數(shù)會逐個進(jìn)行檢查,要求對應(yīng)位置上的參數(shù)類型是兼容的。 如果你不想指定類型洪己,TypeScript的類型系統(tǒng)會推斷出參數(shù)類型妥凳,因為函數(shù)直接賦值給了 someInterface類型變量。 函數(shù)的返回值類型是通過其返回值推斷出來的(此例是 false和true)答捕。 如果讓這個函數(shù)返回數(shù)字或字符串逝钥,類型檢查器會警告我們函數(shù)的返回值類型與someInterface接口中的定義不匹配。

本實例結(jié)束實踐項目地址

https://github.com/durban89/typescript_demo.git
tag: 1.0.11
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末拱镐,一起剝皮案震驚了整個濱河市艘款,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌沃琅,老刑警劉巖哗咆,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異益眉,居然都是意外死亡岳枷,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進(jìn)店門呜叫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人殿衰,你說我怎么就攤上這事朱庆。” “怎么了闷祥?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵娱颊,是天一觀的道長。 經(jīng)常有香客問我凯砍,道長箱硕,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任悟衩,我火速辦了婚禮剧罩,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘座泳。我一直安慰自己惠昔,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布挑势。 她就那樣靜靜地躺著镇防,像睡著了一般。 火紅的嫁衣襯著肌膚如雪潮饱。 梳的紋絲不亂的頭發(fā)上来氧,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼啦扬。 笑死中狂,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的考传。 我是一名探鬼主播吃型,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼僚楞!你這毒婦竟也來了勤晚?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤泉褐,失蹤者是張志新(化名)和其女友劉穎赐写,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體膜赃,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡挺邀,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了跳座。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片端铛。...
    茶點(diǎn)故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖疲眷,靈堂內(nèi)的尸體忽然破棺而出禾蚕,到底是詐尸還是另有隱情,我是刑警寧澤狂丝,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布换淆,位于F島的核電站,受9級特大地震影響几颜,放射性物質(zhì)發(fā)生泄漏倍试。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一蛋哭、第九天 我趴在偏房一處隱蔽的房頂上張望县习。 院中可真熱鬧,春花似錦谆趾、人聲如沸准颓。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽攘已。三九已至,卻和暖如春怜跑,著一層夾襖步出監(jiān)牢的瞬間样勃,已是汗流浹背吠勘。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留峡眶,地道東北人剧防。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像辫樱,于是被迫代替她去往敵國和親峭拘。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評論 2 344

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