基礎(chǔ)類(lèi)型
- 布爾值,boolean
- 數(shù)字牛郑,number
- 字符串怠肋,string
- 數(shù)組,number[]和Array<number>
- 元組淹朋,[string, number]
- 枚舉灶似,對(duì)javascript標(biāo)準(zhǔn)數(shù)據(jù)類(lèi)型的一個(gè)補(bǔ)充。enum Color {Red, Green, Blue}
- 任意值瑞你,any
- 空值,void
- null和undefined希痴,默認(rèn)情況下者甲,null和undefined是所有類(lèi)型的子類(lèi)
- never,表示永不存在的值的類(lèi)型砌创,比如總是會(huì)拋出異陈哺祝或者不會(huì)有返回值(返回void也是有返回值)的函數(shù)
- 類(lèi)型斷言鲫懒,類(lèi)似強(qiáng)制類(lèi)型轉(zhuǎn)換:(<string>someValue).length或者(someValue as string).length,兩種語(yǔ)法等價(jià)刽辙,但JSX中只有as語(yǔ)法合法窥岩。
變量聲明
- var聲明可以在包含它的函數(shù)、模塊宰缤、命名空間或全局作用域內(nèi)部任何位置被訪(fǎng)問(wèn)(而不是代碼塊)
- let聲明使用的是詞法作用域或塊作用域
- var在同一作用域內(nèi)無(wú)論被聲明多少次都只會(huì)得到指向同一個(gè)引用的變量颂翼,let在同一作用域內(nèi)重聲明會(huì)報(bào)錯(cuò)
接口
- Typescript的核心原則之一是對(duì)值所具有的結(jié)構(gòu)進(jìn)行類(lèi)型檢查,接口的作用就是為這些類(lèi)型命名和你的代碼或者第三方代碼定義契約慨灭。
- 索引簽名 interface SquareConfig {
color?: string;
width?: number;
[propName: string]: any; //這里是索引簽名
} - 接口可以繼承類(lèi)朦乏,僅繼承其聲明,不繼承其實(shí)現(xiàn)
函數(shù)
- 定義行為的地方
- 函數(shù)可以使用函數(shù)體外部的變量
- TypeScript里傳遞給一個(gè)函數(shù)的參數(shù)個(gè)數(shù)必須與函數(shù)期望的參數(shù)個(gè)數(shù)一致
- 可選參數(shù)(用氧骤?標(biāo)記)一定在必須參數(shù)后面
- Javascript中呻疹,函數(shù)里的this是函數(shù)被調(diào)用時(shí)的this,而不是定義時(shí)的this筹陵;通過(guò)ES6語(yǔ)法的箭頭函數(shù)刽锤,能夠?qū)his綁定在被定義時(shí)
泛型
- 泛型函數(shù)function identity<T>(arg: T): T
- 泛型類(lèi)
class GenericNumber<T> {
zeroValue: T;
add: (x: T, y: T) => T;
} - 泛型約束extends:function loggingIdentity<T extends Lengthwise>(arg: T): T
枚舉
- enum Direction {
Up,
Down,
Left,
Right
} - 普通枚舉編譯后是一個(gè)即時(shí)執(zhí)行函數(shù)
- 常數(shù)枚舉是在enum前面加上一個(gè)const,常數(shù)枚舉可以避免生成多余的代碼和間接引用朦佩,常數(shù)枚舉只能使用常數(shù)枚舉表達(dá)式
類(lèi)型推論
- 最佳通用類(lèi)型
- 上下文
類(lèi)型兼容性
- TypeScript里的類(lèi)型兼容性是基于結(jié)構(gòu)子類(lèi)型的并思,而不是基于名義
高級(jí)類(lèi)型
- 交叉類(lèi)型 T&U,一個(gè)類(lèi)型具有這些所有類(lèi)型的特性吕粗,并集
- 聯(lián)合類(lèi)型 T|U纺荧,只能訪(fǎng)問(wèn)交集
- 自定義類(lèi)型保護(hù),返回值為一個(gè)類(lèi)型謂詞颅筋,parameter is Type
- typeof類(lèi)型保護(hù)宙暇,typeof parameter === 'type'
- 類(lèi)型別名,type Name = string议泵,然后可以用Name代替string
Iterators和Generators
- for...of迭代是對(duì)象的值占贫,ES6引入,for...in迭代對(duì)象的鍵