typescript重學-基礎(chǔ)類型

該系列基于typescript中文文檔官網(wǎng)重新學習編寫的demo,部分描述未必正確,又或者說對到typescript中不一定正確蕊温,僅做學習記錄,該系列源于ts4.9.5版本進行試驗,與官網(wǎng)相比是不會一直重復串知識點拔第,方便聚焦知識點的實現(xiàn)

string類型

let stringType: string = '字符串'
let sentence: string = `這是一個類型為${stringType}的句子`
// stringType = 123 // ts報錯,類型一經(jīng)指定不允許變更
console.log(stringType, sentence)

布爾類型

let booleanType: boolean = true
console.log(booleanType)

數(shù)值類型场钉,二進制蚊俺、八進制、十進制逛万、十六進制均合法可識別

let decLiteral: number = 6 // 十進制
let hexLiteral: number = 0xf00d // 十六進制春叫,以0x開頭
let binaryLiteral: number = 0b1010 // 二進制,以0b開頭
let octalLiteral: number = 0o744 // 八進制泣港,以0開頭
console.log(decLiteral, hexLiteral, binaryLiteral, octalLiteral)

數(shù)組類型

let arrayType: Array<number> = [1, 2, 3]
let arrayType2: string[] = ['1', "2", `3`]
console.log(arrayType, arrayType2)

元組類型暂殖,允許表示一個已知元素數(shù)量和類型的數(shù)組,各元素的類型不必相同

let tupleType: [string, number] = ['string', 2]
console.log(tupleType)
// console.log(tupleType[2]) // 報錯当纱,訪問了一個超過其長度限制的索引
// tupleType[2] = "abc" // 報錯呛每,不能將類型"abc"分配給類型“undefined”,但是文檔可以坡氯,應該是中文文檔沒對應最新版ts

枚舉類型晨横,左邊是值洋腮,右邊是元素編號

如果值是數(shù)值(也就是下標,是允許通過下標取key的手形,否則只能通過key取value)

enum Color { red, green, blue }
const redColorIndex = Color['red'] // 0
const greenColor = Color[1] // 'green'
console.log(redColorIndex, greenColor)

如果值非數(shù)值啥供,則只能通過鍵來取值,不允許反瓤饪贰(Color['r'])伙狐,否則即使寫成Color['r' as keyof typeof Color],解決掉報錯構(gòu)建出來的結(jié)果也不對瞬欧,依然會獲取到undefined

enum Color {
  red = 'r' ,
  green = 'g',
  blue = 'b'
}
let getColor: string = Color['red']
console.log(getColor)

any類型贷屎,允許發(fā)生變更,用于變量的指定類型艘虎,不同于Object類型唉侄,其方法也是允許使用的

let anyType: any = ['test', 123, [0]]
anyType[2] = 123 // 變更類型,超過邊界都是可以的
anyType = 'change'

let anyObjectType: Object = "abc"
anyObjectType = 4.125
// anyObjectType.toFixed(3) // 雖然允許改變類型野建,但是使用方法的時候會報錯

console.log(anyType, anyObjectType)

void類型属划,表示無任何返回

// let unusable: void = null // 舊版ts中null也會合法,需要開啟了strictNullChecks候生,新版中默認為開啟同眯,如果需要關(guān)閉需要設置為false
function voidFn(): void {
  console.log('函數(shù)不返回任何內(nèi)容')
  return undefined // 這個是合法的,但不能返回null或其他基本類型
}
voidFn()

null 和 undefined類型陶舞,舊版里為其他類型子集嗽测,新版中默認已開啟strictNullChecks,所以不合法

// let nullType: number = undefined
let nullType: null = null
let undefinedType: undefined = undefined
let mutipleType: number | null | undefined = 123
console.log(nullType, undefinedType, mutipleType)

never類型肿孵,表示永遠不會執(zhí)行到唠粥,可以賦值給任何類型,但任何其他類型均不能賦值給never

function errorFn(message: string): (never | Error) { // 這么寫是為了讓下面不會被檢測為不會被執(zhí)行的代碼
  throw Error(message)
}
errorFn('報錯啦')
function fail(message: string): Error {
  return Error(message)
}
fail('失敗')
// 這個不要跑run code
function infiniteLoop(): never {
  while (true) {
  }
}
infiniteLoop()

object類型

該類型實際開發(fā)中基本用不到停做,表示非原始類型晤愧,作為約束不夠嚴謹,作為類型又無法使用對象方法蛉腌,僅做記錄

declare function create(o: object | null): void;

create({ prop: 0 })
create(null)

類型斷言

尖括號語法

let someValue: any = "this is a string"
let strLength: number = (<string>someValue).length

as語法官份,JSX中只能使用該語法

let replaceStr: string[] = (someValue as string).split(' ')
console.log(strLength, replaceStr) // 16, [ 'this', 'is', 'a', 'string' ]
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市烙丛,隨后出現(xiàn)的幾起案子舅巷,更是在濱河造成了極大的恐慌,老刑警劉巖河咽,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件钠右,死亡現(xiàn)場離奇詭異,居然都是意外死亡忘蟹,警方通過查閱死者的電腦和手機飒房,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進店門搁凸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人狠毯,你說我怎么就攤上這事护糖。” “怎么了嚼松?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵嫡良,是天一觀的道長。 經(jīng)常有香客問我惜颇,道長皆刺,這世上最難降的妖魔是什么少辣? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任凌摄,我火速辦了婚禮,結(jié)果婚禮上漓帅,老公的妹妹穿的比我還像新娘锨亏。我一直安慰自己,他們只是感情好忙干,可當我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布器予。 她就那樣靜靜地躺著,像睡著了一般捐迫。 火紅的嫁衣襯著肌膚如雪乾翔。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天施戴,我揣著相機與錄音反浓,去河邊找鬼。 笑死赞哗,一個胖子當著我的面吹牛雷则,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播肪笋,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼月劈,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了藤乙?” 一聲冷哼從身側(cè)響起猜揪,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎坛梁,沒想到半個月后而姐,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡罚勾,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年毅人,在試婚紗的時候發(fā)現(xiàn)自己被綠了吭狡。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡丈莺,死狀恐怖划煮,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情缔俄,我是刑警寧澤弛秋,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站俐载,受9級特大地震影響蟹略,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜遏佣,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一挖炬、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧状婶,春花似錦意敛、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至稍刀,卻和暖如春撩独,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背账月。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工综膀, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人捶障。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓僧须,卻偏偏與公主長得像,于是被迫代替她去往敵國和親项炼。 傳聞我的和親對象是個殘疾皇子担平,可洞房花燭夜當晚...
    茶點故事閱讀 42,762評論 2 345

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

  • 本章是在官方文檔上加以注解學習 1.布爾值 最基本的數(shù)據(jù)類型就是簡單的 true/false 值,在JavaScr...
    邢走在云端閱讀 403評論 0 4
  • 轉(zhuǎn)載地址 TypeScript基礎(chǔ)入門 - 基礎(chǔ)類型 項目實踐倉庫 為了保證后面的學習演示需要安裝下ts-node...
    鵬鯤云之上閱讀 533評論 0 1
  • 介紹 為了讓程序有價值锭部,我們需要能夠處理最簡單的數(shù)據(jù)單元:數(shù)字暂论,字符串,結(jié)構(gòu)體拌禾,布爾值等取胎。 TypeScript...
    wson閱讀 131評論 0 0
  • 介紹 為了讓程序有價值,我們需要能夠處理最簡單的數(shù)據(jù)單元:數(shù)字,字符串闻蛀,結(jié)構(gòu)體匪傍,布爾值等。 TypeScript支...
    2o壹9閱讀 591評論 0 50
  • 介紹 為了讓程序更有價值觉痛,我們需要能夠處理最簡單的數(shù)據(jù)單元:數(shù)字役衡、字符串、結(jié)構(gòu)體薪棒、布爾值等手蝎。TypeScript支...
    24KBING閱讀 370評論 0 0