Typescript

基本類型

布爾值 boolean

最基本的數(shù)據(jù)類型就是簡單的true/false值鞠呈,在JavaScript和TypeScript里叫做boolean(其它語言中也一樣)

let isMe: boolean = false;
數(shù)字 number

和JavaScript一樣某筐,TypeScript里的所有數(shù)字都是浮點(diǎn)數(shù)有梆。 這些浮點(diǎn)數(shù)的類型是 number吊履。 除了支持十進(jìn)制和十六進(jìn)制字面量,TypeScript還支持ECMAScript 2015中引入的二進(jìn)制和八進(jìn)制字面量锻煌。

let dec: number = 6
let hex: number = 0xff00d
let binary: number = 0b1010
let oct: number = 0o744
字符串 string

JavaScript程序的另一項(xiàng)基本操作是處理網(wǎng)頁或服務(wù)器端的文本數(shù)據(jù)翩隧。 像其它語言里一樣樊展,我們使用 string表示文本數(shù)據(jù)類型。 和JavaScript一樣堆生,可以使用雙引號( ")或單引號(')表示字符串专缠。

let str: string = 'abc'
str = 'efg'

你還可以使用模版字符串,它可以定義多行文本和內(nèi)嵌表達(dá)式淑仆。 這種字符串是被反引號包圍( `)藤肢,并且以${ expr }這種形式嵌入表達(dá)式

let age: number = 31
let str: string = `我今年${age}歲`
數(shù)組 array

TypeScript像JavaScript一樣可以操作數(shù)組元素。 有兩種方式可以定義數(shù)組糯景。 第一種嘁圈,可以在元素類型后面接上 [],表示由此類型元素組成的一個(gè)數(shù)組

let arr: number[] = [1, 2, 3]
let arr: any[] = [1,'a',2]
let arr: string[] = ['a','b','c']

第二種方式是使用數(shù)組泛型蟀淮,Array<元素類型>:

let arr: Array<number> = [1, 2, 3]
let arr: Array<any> = [1,'a',2]
let arr: Array<string> = ['a', 'b','c']
元組 Tuple

元組類型允許表示一個(gè)已知元素?cái)?shù)量和類型的數(shù)組最住,各元素的類型不必相同。 比如怠惶,你可以定義一對值分別為 string和number類型的元組涨缚。

let x: [string, number] = ['a', 1]  // 注意順序得對,固定類型策治、長度得匹配脓魏,否則報(bào)錯(cuò)
//元組還有個(gè)bug是: push 操作能夠超過定義的長度
// x.push('some') // 會報(bào)錯(cuò)
Union 類型 (聯(lián)合類型) 與Literal字面量類型(規(guī)定了取值有那些,之外的值會報(bào)錯(cuò))
// 聯(lián)合類型
let union: number | string;
union = 1
union = 'meng'
function sum (n1: number | string, n2: number | string): number | string {
  return n1+n2
}
sum(1, 2)  // 3
sum('m', 'n') // mn
// 字面量Literal類型
let literal : 1 | 3 | 5 | 8 
Literal 錯(cuò)誤log
any 類型
let a: any = 2
a = 'meng'
a = true
a()  // 不會報(bào)錯(cuò)
a.toString() // 不會報(bào)錯(cuò)
unknow (可保證類型的安全)
let b: unknown = 88
b = 'meng'
b = {}
b() // 比較嚴(yán)格通惫,報(bào)錯(cuò)哦
b.toUpperCase() // 比較嚴(yán)格茂翔,報(bào)錯(cuò)哦

// 或這種寫法不會報(bào)錯(cuò)
if (typeof b == 'function') {
    b() 
}
if (typeof b === 'string') {
    b.toUpperCase()
}
枚舉錯(cuò)誤情況

image.png
void undefined never

// void (本身不存在,沒有)
function returnValue (): void {
console.log('無返回值')
}
function returnUndefined (): undefined {
console.log('有返回履腋,但是沒有值, 從變量角度的話就是有定義未賦值')
return
}
function returnNever (): never {
console.log('永遠(yuǎn)不會有值')
while(true) {
console.log('死循環(huán)')
}
}

枚舉類型(適配類型)
let someValue: any = '人民大學(xué)'
let strLength: number = (someValue as string).length // 方式一 具備了string的特性及l(fā)ength屬性珊燎,及其它string屬性與
let strLen: number = (<string>someValue).length // 方式二 具備了string的特性惭嚣,及l(fā)ength屬性,及其它string屬性與方法
函數(shù)類型
// 定義接口
interface P2 {
    name: string,
    age: number
}
// 定義接口
interface SearchFunc {
    (param1: string, param2: P2): boolean
}
// 聲明變量悔政,接口類型
let sFn: SearchFunc

// 函數(shù)實(shí)現(xiàn)接口類型
sFn = function(name: string, userInfo: P2) : boolean{
    return true
}

object 類型
const person = {
    name: 'meng',
    age: 33
}
console.log(person.some)  // 會報(bào)錯(cuò)
log
// 不會報(bào)錯(cuò), 類型any 就對沒有聲明屬性不會報(bào)錯(cuò)
const person: any = {
    name: 'meng',
    age: 33
}
console.log(person.some)
接口 Interface
interface Point {
    x: number;
    y: number;
}
function getSum (point: Point): number {
    return point.x + point.y
}
class 類
//  聲明類晚吞,并實(shí)現(xiàn)接口,當(dāng)里面不滿足接口時(shí)的報(bào)錯(cuò)
class Cpoint implements IPoint {
    x: number
    y: number

    constructor (x: number, y: number) {
        this.x = x
        this.y = y
    }
    getSum = () => {
        console.log(this.x+this.y)
    }
    
}
錯(cuò)誤示例谋国,當(dāng)里面不滿足接口時(shí)的報(bào)錯(cuò)
class Cpoint implements IPoint {
    x: number
    y: number

    constructor (x: number, y: number) {
        this.x = x
        this.y = y
    }
    getSum = () => {
        console.log(this.x+this.y)
    }
    getDis = (p: IPoint) => {
        return this.x+this.y
    }
}
const p2 = new Cpoint(10,5)

p2.getSum()
p2.getDis(p2) // 15
滿足條件后槽地,不再報(bào)錯(cuò)
Access Modifier 訪問修飾符 (public、private芦瘾、static)
interface IPoint {
    X: number
    getSum: ()=> void
    getDis: (p: IPoint) => number
}
class Cpoint implements IPoint {

    // 私有變量命名也可:下劃線形式_x捌蚊,更直觀理解(尤其編譯成es5)
    constructor (private x: number, private y: number) {
        this.x = x
        this.y = y
    }
    getSum = () => {
        console.log(this.x+this.y)
    }
    getDis = (p: IPoint) => {
        return p.X+this.y
    }
    // 懶人包:取值
    get X () {
        return this.x
    }
    // 懶人包:設(shè)置值
    set X (value: number) {
        this.x = value
    }

}
const p2 = new Cpoint(10,5)

p2.getSum()
p2.getDis(p2) // 15
p2.X = 1 // 懶人包直接設(shè)置值
console.log(p2.X)  // 懶人包直接取值

泛型 Generics
// 泛型
const getSomes = <T>(arr: Array<T>) => arr.length - 1
getSomes([1, 2, 3, 4, 5]) // 泛型number
getSomes(['A',3,'C','D']) // 泛型配合聯(lián)合類型自動(dòng)<string | number>
getSomes(['a', 1, 'c', true]) // // 泛型配合聯(lián)合類型自動(dòng)<string | number | boolean>
getSomes<string | number | boolean>(['a', 1, 'c', true]) // 限制泛型聯(lián)合類型,正確形式
getSomes<string | number>(['a', 1, 'c', true]) // 限制泛型聯(lián)合類型旅急,錯(cuò)誤形式逢勾,確實(shí)boolean類型牡整,超出限定范圍
泛型number

泛型聯(lián)合類型

泛型聯(lián)合類型

限制泛型聯(lián)合類型藐吮,正確形式

限制泛型聯(lián)合類型,錯(cuò)誤形式逃贝,確實(shí)boolean類型谣辞,超出限定范圍
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市沐扳,隨后出現(xiàn)的幾起案子泥从,更是在濱河造成了極大的恐慌,老刑警劉巖沪摄,帶你破解...
    沈念sama閱讀 212,454評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件躯嫉,死亡現(xiàn)場離奇詭異,居然都是意外死亡杨拐,警方通過查閱死者的電腦和手機(jī)祈餐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來哄陶,“玉大人帆阳,你說我怎么就攤上這事∥荻郑” “怎么了蜒谤?”我有些...
    開封第一講書人閱讀 157,921評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長至扰。 經(jīng)常有香客問我鳍徽,道長,這世上最難降的妖魔是什么敢课? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任旬盯,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘胖翰。我一直安慰自己接剩,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布萨咳。 她就那樣靜靜地躺著懊缺,像睡著了一般。 火紅的嫁衣襯著肌膚如雪培他。 梳的紋絲不亂的頭發(fā)上鹃两,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天,我揣著相機(jī)與錄音舀凛,去河邊找鬼俊扳。 笑死,一個(gè)胖子當(dāng)著我的面吹牛猛遍,可吹牛的內(nèi)容都是我干的馋记。 我是一名探鬼主播,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼懊烤,長吁一口氣:“原來是場噩夢啊……” “哼梯醒!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起腌紧,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤茸习,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后壁肋,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體号胚,經(jīng)...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年浸遗,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了猫胁。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,724評論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡乙帮,死狀恐怖杜漠,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情察净,我是刑警寧澤驾茴,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站氢卡,受9級特大地震影響锈至,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜译秦,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評論 3 316
  • 文/蒙蒙 一峡捡、第九天 我趴在偏房一處隱蔽的房頂上張望击碗。 院中可真熱鬧,春花似錦们拙、人聲如沸稍途。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽械拍。三九已至,卻和暖如春装盯,著一層夾襖步出監(jiān)牢的瞬間坷虑,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評論 1 266
  • 我被黑心中介騙來泰國打工埂奈, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留迄损,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,503評論 2 361
  • 正文 我出身青樓账磺,卻偏偏與公主長得像芹敌,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子绑谣,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評論 2 350

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

  • TypeScript Array(數(shù)組) 數(shù)組對象是使用單獨(dú)的變量名來存儲一系列的值党窜。 數(shù)組非常常用拗引。 假如你有一...
    半個(gè)木頭人閱讀 637評論 0 0
  • 很多開發(fā)者對新生事物借宵,會有畏懼的心情,其實(shí)矾削,靜下心來壤玫,大家會發(fā)現(xiàn),編程語言之間都是相通的哼凯,大同小異欲间。因最近Coco...
    游戲程序猿閱讀 129評論 0 0
  • TypeScript是JavaScript的一個(gè)超集,支持ECMAScript 基礎(chǔ)語法: 組成部分-- 模塊断部,函...
    空白頁_9980閱讀 563評論 0 0
  • 很多開發(fā)者對新生事物猎贴,會有畏懼的心情,其實(shí)蝴光,靜下心來她渴,大家會發(fā)現(xiàn),編程語言之間都是相通的蔑祟,大同小異趁耗。因最近Coco...
    游戲開發(fā)大表哥閱讀 529評論 0 0
  • 介紹 為了讓程序有價(jià)值,我們需要能夠處理最簡單的數(shù)據(jù)單元:數(shù)字疆虚,字符串苛败,結(jié)構(gòu)體满葛,布爾值等。 TypeScript支...
    2o壹9閱讀 592評論 0 50