TypeScript學(xué)習(xí)記錄

今天也好喜歡你啊呕诉。

寫這篇的時(shí)候缘厢,也滿腦子的你。

2020/02/18



1.TypeScript 只會(huì)進(jìn)行靜態(tài)檢查甩挫,如果發(fā)現(xiàn)有錯(cuò)誤贴硫,編譯的時(shí)候就會(huì)報(bào)錯(cuò),但仍會(huì)生成js文件

如果要在報(bào)錯(cuò)的時(shí)候終止 js 文件的生成伊者,可以在 tsconfig.json 中配置 noEmitOnError 即可




1.JavaScript 的類型分為兩種:原始數(shù)據(jù)類型和對(duì)象類型英遭。

原始數(shù)據(jù)類型包括:布爾值、數(shù)值亦渗、字符串挖诸、null、undefined 以及 ES6 中的新類型 Symbol法精。

在 TypeScript 中多律,boolean 是 JavaScript 中的基本類型,而 Boolean 是 JavaScript 中的構(gòu)造函數(shù)搂蜓。其他基本類型(除了 null 和 undefined)一樣

eg:

let isDone: boolean = false; 編譯通過(guò)

let createdByNewBoolean: boolean = new Boolean(1);或者 let createdByNewBoolean: Boolean = new Boolean(1);? 編譯不通過(guò)狼荞,因?yàn)榉祷氐氖且粋€(gè) Boolean 對(duì)象


2.Void、undefined 和 null

在 TypeScript 中帮碰,可以用 void 表示沒有任何返回值的函數(shù)相味;

聲明一個(gè) void 類型的變量沒有什么用,因?yàn)槟阒荒軐⑺x值為 undefined 和 null殉挽;

undefined 和 null 是所有類型的子類型攻走。也就是說(shuō) undefined ?和 null類型的變量,可以賦值給其他變量此再;void不行

eg:

let num: number = undefined; 編譯通過(guò)


3.any類型

允許被賦值為任意類型昔搂;

變量如果在聲明的時(shí)候,未指定其類型输拇,那么它會(huì)被識(shí)別為任意值類型摘符;

eg:

let something;

something = 'seven';

something = 7;? 編譯通過(guò),因?yàn)轭愋屯普搶omething認(rèn)為any

eg:

let myFavoriteNumber = 'seven';

myFavoriteNumber = 7;? 編譯不通過(guò)策吠,因?yàn)轭愋屯普搶yFavoriteNumber認(rèn)為string


4.聯(lián)合類型

當(dāng)不確定一個(gè)聯(lián)合類型的變量到底是哪個(gè)類型的時(shí)候逛裤,我們只能訪問此聯(lián)合類型的所有類型里共有的屬性或方法

eg:

let myFavoriteNumber: string | number;

5.interface

它是對(duì)行為的抽象,而具體如何行動(dòng)需要由類(classes)去實(shí)現(xiàn)(implement);接口一般首字母大寫猴抹;

一旦定義了任意屬性带族,那么確定屬性和可選屬性都必須是它的子屬性

eg:

interface Person {

? ? name: string;

? ? age?: number;

}

name屬性必須有,age可以沒有蟀给,除了這兩個(gè)不允許有其他屬性蝙砌。


eg:

interface Person{

? ? name: string;

? ? age?: number;

? ? [propName: string]: any;

}

使用 [propName: string] 定義了任意屬性取 string 類型的值阳堕。

let tom: Person = {

? ? name: 'Tom',

? ? gender: 'male'

};

eg:

interface Person {

? ? readonly id: number;

? ? name: string;

? ? age?: number;

? ? [propName: string]: any;

}

let tom: Person = {

? ? id:1,

? ? name: 'Tom',

? ? gender: 'male'

};

只讀屬性在第一次給對(duì)象賦值時(shí)也要賦值,只是后面不能修改

tom.id = 89757;? 會(huì)編譯失敗


6.數(shù)組(待續(xù))

數(shù)組: let fibonacci: number[] = [1, 1, 2, 3, 5];

數(shù)組泛型:? let fibonacci: Array<number> = [1, 1, 2, 3, 5];


7.函數(shù)

在 TypeScript 的類型定義中择克,=> 用來(lái)表示函數(shù)的定義恬总,左邊是輸入類型,需要用括號(hào)括起來(lái)肚邢,右邊是輸出類型壹堰;

與ES6中的 => 完全不同

eg:

let mySum = function (x: number, y: number): number {

? ? return x + y;

};

let mySum: (x: number, y: number) => number = function (x: number, y: number): number {

? ? return x + y;

};

前者利用類型推論推斷出mySum的類型


允許可選參數(shù),用 “骡湖?”表示贱纠,但可選參數(shù)必須在必須參數(shù)之后

eg:

function buildName(firstName?: string, lastName: string) {

? ? ...

}


允許參數(shù)默認(rèn)值,TypeScript 會(huì)將添加了默認(rèn)值的參數(shù)識(shí)別為可選參數(shù)响蕴;此時(shí)就不受「可選參數(shù)必須接在必需參數(shù)后面」的限制了

eg:

function buildName(firstName: string = 'Tom', lastName: string) {

? ...

}


剩余參數(shù)谆焊,使用 “...rest”方式

eg:

function push(array, ...items) {

? ....

}


允許函數(shù)重載

TypeScript 會(huì)優(yōu)先從最前面的函數(shù)定義開始匹配,所以多個(gè)函數(shù)定義如果有包含關(guān)系换途,需要優(yōu)先把精確的定義寫在前面


8.斷言

當(dāng)不確定一個(gè)聯(lián)合類型的變量到底是哪個(gè)類型的時(shí)候,我們只能訪問此聯(lián)合類型的所有類型里共有的屬性或方法刽射。此時(shí)可以使用類型斷言军拟,將該變量“轉(zhuǎn)換”為聯(lián)合類型中的一個(gè);

斷言成一個(gè)聯(lián)合類型中不存在的類型是不允許的

eg:

function getLength(something: string | number): number {

? ?if ((<string>something).length) {

? ? ? ? return (<string>something).length;

? ? } else {

? ? ? ? return something.toString().length;

? ? }

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市誓禁,隨后出現(xiàn)的幾起案子懈息,更是在濱河造成了極大的恐慌,老刑警劉巖摹恰,帶你破解...
    沈念sama閱讀 217,509評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件辫继,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡俗慈,警方通過(guò)查閱死者的電腦和手機(jī)姑宽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)闺阱,“玉大人炮车,你說(shuō)我怎么就攤上這事『ɡ#” “怎么了瘦穆?”我有些...
    開封第一講書人閱讀 163,875評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)赊豌。 經(jīng)常有香客問我扛或,道長(zhǎng),這世上最難降的妖魔是什么碘饼? 我笑而不...
    開封第一講書人閱讀 58,441評(píng)論 1 293
  • 正文 為了忘掉前任熙兔,我火速辦了婚禮悲伶,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘黔姜。我一直安慰自己拢切,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評(píng)論 6 392
  • 文/花漫 我一把揭開白布秆吵。 她就那樣靜靜地躺著淮椰,像睡著了一般。 火紅的嫁衣襯著肌膚如雪纳寂。 梳的紋絲不亂的頭發(fā)上主穗,一...
    開封第一講書人閱讀 51,365評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音毙芜,去河邊找鬼忽媒。 笑死,一個(gè)胖子當(dāng)著我的面吹牛腋粥,可吹牛的內(nèi)容都是我干的晦雨。 我是一名探鬼主播,決...
    沈念sama閱讀 40,190評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼隘冲,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼闹瞧!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起展辞,我...
    開封第一講書人閱讀 39,062評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤奥邮,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后罗珍,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體洽腺,經(jīng)...
    沈念sama閱讀 45,500評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評(píng)論 3 335
  • 正文 我和宋清朗相戀三年覆旱,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蘸朋。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,834評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡扣唱,死狀恐怖度液,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情画舌,我是刑警寧澤堕担,帶...
    沈念sama閱讀 35,559評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站曲聂,受9級(jí)特大地震影響霹购,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜朋腋,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評(píng)論 3 328
  • 文/蒙蒙 一齐疙、第九天 我趴在偏房一處隱蔽的房頂上張望膜楷。 院中可真熱鬧,春花似錦贞奋、人聲如沸赌厅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)特愿。三九已至,卻和暖如春勾缭,著一層夾襖步出監(jiān)牢的瞬間揍障,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人邀窃。 一個(gè)月前我還...
    沈念sama閱讀 47,958評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像撑螺,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評(píng)論 2 354