TypeScript語言

強(qiáng)類型與弱類型(類型安全)

強(qiáng)類型在語言層面限制函數(shù)的實(shí)參類型必須與形參類型相同亲桦;強(qiáng)類型語言中不允許有任意的數(shù)據(jù)隱式類型轉(zhuǎn)換崖蜜,但弱類型相反。

變量類型允許隨時(shí)改變的特點(diǎn)客峭,不是強(qiáng)弱類型的差異豫领。

靜態(tài)類型與動(dòng)態(tài)類型(類型檢查)

靜態(tài)類型:一個(gè)變量聲明時(shí)它的類型就是明確的,聲明過后它的類型就不允許再修改舔琅。
動(dòng)態(tài)類型:運(yùn)行階段才能夠明確變量類型等恐,而且變量的類型可以隨時(shí)發(fā)生變化。

JavaScript自有類型系統(tǒng)的問題

弱類型的問題
  1. 由于js是腳本語言不存在編譯環(huán)節(jié)备蚓,如果存在變量類型錯(cuò)誤那么只有在運(yùn)行時(shí)才會(huì)報(bào)錯(cuò)课蔬,如果存在耗時(shí)長的異步任務(wù),那么這個(gè)錯(cuò)誤很可能就會(huì)被忽略掉成為隱患郊尝;
  2. 多人協(xié)同開發(fā)時(shí)很可能會(huì)傳遞錯(cuò)誤的參數(shù)類型出現(xiàn)bug二跋,由于類型不明確就會(huì)造成函數(shù)功能發(fā)生改變;
  3. 出現(xiàn)對(duì)對(duì)象索引器錯(cuò)誤的用法流昏。
強(qiáng)類型的優(yōu)勢(shì)
  1. 錯(cuò)誤更早暴露扎即;
  2. 代碼更智能吞获,編碼更準(zhǔn)確;
  3. 重構(gòu)更牢靠谚鄙;
  4. 減少不必要的類型判斷各拷。

Flow靜態(tài)類型檢查方案

可以在變量后面增加: type對(duì)變量進(jìn)行類型注解。

  • 使用步驟:

    1. 添加flow-bin闷营;
    2. 在需要使用flow進(jìn)行類型檢查的文件頭部增加如下注釋標(biāo)記撤逢;
    //@flow
    
    1. 為變量添加類型注解。
  • Flow編譯移除注解

    1. 安裝flow-remove-types
    2. 安裝bable/core bable/cli babel/preset-flow
  • Flow開發(fā)工具插件
    Flow Language Support

  • Flow類型推斷
    根據(jù)代碼使用情況推斷變量的類型粮坞。

  • Flow類型注解
    除了對(duì)函數(shù)參數(shù)進(jìn)行類型注解外,還可以對(duì)變量和函數(shù)返回值類型進(jìn)行類型注解初狰。在括號(hào)后加上: type可以對(duì)函數(shù)返回值進(jìn)行類型注解莫杈,如果返回值為空,那么類型為void奢入。

  • 原始類型
    string筝闹、number(NaN,Infinity無窮大)腥光、boolean关顷、null、undefined(用void表示)武福、symbol

  • 數(shù)組類型
    Array<number>议双、number[]
    元組:[string, number] 可用于函數(shù)返回多個(gè)參數(shù)

  • 對(duì)象類型
    { [string]: string }
    還可以在對(duì)象中指定任意鍵值對(duì)的類型,如果這個(gè)鍵值對(duì)可有可無那么加上?

  • 函數(shù)類型

  • 特殊類型
    字面量類型(一般配合聯(lián)合類型使用)捉片;
    通過type關(guān)鍵字給類型使用別名或者用type單獨(dú)聲明一個(gè)類型平痰;
    maybe類型。

  • Mixed & Any
    mixed為強(qiáng)類型伍纫,any為弱類型(盡量不使用宗雇,作用是為了兼容老代碼)

  • 運(yùn)行環(huán)境API

TypeScript語言規(guī)范與基本應(yīng)用

TypeScript是ES6 JavaScript類型化的超集,相比于JavaScript多了類型校驗(yàn)系統(tǒng)和ES6標(biāo)準(zhǔn)莹规。

  • 使用步驟:

    1. 安裝typescript赔蒲;
    2. 使用tsc(typescript compile)命令編譯typescript文件,會(huì)檢查代碼中的類型使用異常良漱、移除類型注解的擴(kuò)展語法舞虱、自動(dòng)轉(zhuǎn)化ES新特性。
  • 配置文件
    使用yarn tsc --init自動(dòng)生成配置文件母市。

  • ts標(biāo)準(zhǔn)庫聲明

標(biāo)準(zhǔn)庫就是內(nèi)置對(duì)象所對(duì)應(yīng)的聲明砾嫉。

  • 中文錯(cuò)誤消息
    使用yarn tsc --local zh-CN以中文顯示錯(cuò)誤消息。(不推薦)

  • 作用域問題

    • 可以使用立即執(zhí)行函數(shù)窒篱,將變量放到函數(shù)作用域里焕刮;
    • 使用export將文件作為模塊使用舶沿。
ts類型

建議為每個(gè)變量添加明確的類型。

  • 枚舉類型
    用關(guān)鍵字enum聲明配并,=進(jìn)行賦值括荡。如果不指定值則默認(rèn)從0開始累加;第一個(gè)變量如果賦值數(shù)字溉旋,后面的變量也會(huì)在此基礎(chǔ)上開始累加畸冲。
  • 任意類型
    any類型是不安全的,不要輕易使用观腊。
  • 類型斷言
接口

使用interface關(guān)鍵詞聲明邑闲,約束對(duì)象的結(jié)構(gòu)。

  • 可選成員 ?:
  • 只讀成員readonly
  • 動(dòng)態(tài)成員[key: string]: string
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末梧油,一起剝皮案震驚了整個(gè)濱河市苫耸,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌儡陨,老刑警劉巖褪子,帶你破解...
    沈念sama閱讀 211,265評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異骗村,居然都是意外死亡嫌褪,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門胚股,熙熙樓的掌柜王于貴愁眉苦臉地迎上來笼痛,“玉大人,你說我怎么就攤上這事琅拌』纬眨” “怎么了?”我有些...
    開封第一講書人閱讀 156,852評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵财忽,是天一觀的道長倘核。 經(jīng)常有香客問我,道長即彪,這世上最難降的妖魔是什么紧唱? 我笑而不...
    開封第一講書人閱讀 56,408評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮隶校,結(jié)果婚禮上漏益,老公的妹妹穿的比我還像新娘。我一直安慰自己深胳,他們只是感情好绰疤,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著舞终,像睡著了一般轻庆。 火紅的嫁衣襯著肌膚如雪癣猾。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,772評(píng)論 1 290
  • 那天余爆,我揣著相機(jī)與錄音纷宇,去河邊找鬼。 笑死蛾方,一個(gè)胖子當(dāng)著我的面吹牛像捶,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播桩砰,決...
    沈念sama閱讀 38,921評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼拓春,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼!你這毒婦竟也來了亚隅?” 一聲冷哼從身側(cè)響起硼莽,我...
    開封第一講書人閱讀 37,688評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎枢步,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體渐尿,經(jīng)...
    沈念sama閱讀 44,130評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡醉途,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了砖茸。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片隘擎。...
    茶點(diǎn)故事閱讀 38,617評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖凉夯,靈堂內(nèi)的尸體忽然破棺而出货葬,到底是詐尸還是另有隱情,我是刑警寧澤劲够,帶...
    沈念sama閱讀 34,276評(píng)論 4 329
  • 正文 年R本政府宣布震桶,位于F島的核電站,受9級(jí)特大地震影響征绎,放射性物質(zhì)發(fā)生泄漏蹲姐。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評(píng)論 3 312
  • 文/蒙蒙 一人柿、第九天 我趴在偏房一處隱蔽的房頂上張望柴墩。 院中可真熱鬧,春花似錦凫岖、人聲如沸江咳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽歼指。三九已至爹土,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間东臀,已是汗流浹背着饥。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評(píng)論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留惰赋,地道東北人宰掉。 一個(gè)月前我還...
    沈念sama閱讀 46,315評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像赁濒,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子拒炎,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評(píng)論 2 348

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