TypeScript中的常用的數(shù)據(jù)類型

常見的三種值類型

數(shù)字類型
// 申明一個數(shù)字類型的值
let a: number
a = 10
字符串類型
// 申明一個字符串類型的值
let b: string = 'hello'
布爾類型
// 申明一個bool類型的值
let c: boolean = true

PS:類型注釋

冒號 + 類型的叫類型注釋

: string這種叫類型注釋

其他常見類型

字面量類型
// 字面量進行類型申明(字面量:即就是這個值本身)
let aa: 10
// a修改為其他值就會報錯
aa = 11

// 實際開發(fā)中很少這么用,但是我們可以這么用
// 申明一個變量等于男或者女
let sex: 'male' | 'female'
// 我們使用的時候就可以賦值其中一個值蹦渣,賦值其他值就會報錯
sex = 'male'
sex = 'female'
sex = 'hello'
聯(lián)合類型
// | 線可以用來連接多個類型(聯(lián)合類型)
// 除了用在字面量中往果,常規(guī)的使用當(dāng)中有的更多
let bb: boolean | number
bb = true
bb = 123
// 賦值字符串,就錯了
bb = 'hi'
any類型
// 申明任意類型的數(shù)據(jù)
// any表示任意類型,一個變量設(shè)置為any后相當(dāng)于對該變量關(guān)閉了TS的類型檢測
let cc: any
cc = 123
cc = true
cc = 'hi'

// 隱式any,即申明,但是不設(shè)置類型占拍,如下
let dd
dd = 123
unknown類型
// unknown 表示未知類型
let ee: unknown
ee = 123
ee = true
ee = 'hi'
any和unknown比較
// 那么any和unknown有什么區(qū)別呢?
// any可以賦值給任何變量
let ff: string
ff = cc
// unknown實際上就是一個類型安全的any
// unknown類型的變量不能直接賦值給其他變量
let gg: string
gg = ee
// 如何處理這種報錯呢捎迫?
// 1.類型判斷
if(typeof ee === 'string') {
    gg == ee
}
// 2.類型斷言(意思是晃酒,ee就是一個string,你就放心用了)
gg = ee as string
gg = <string>ee
PS:類型斷言
  • 斷言語法
    • 1.變量 as 類型
    • 2.<類型>變量
void類型
// void用來表示空窄绒,以函數(shù)為例贝次,表示沒有返回值的函數(shù)
function fn():void {
    console.log(11111)
}
// never表示永遠(yuǎn)不會返回結(jié)果
function fn2(): never {
    throw new Error('出錯了')
}

object類型
// object表示一個js對象
let obj: object
obj = {}
obj = function() {

}
// js中對象太多了,一般不像上面這樣申明彰导,那么我們在上面時候用這種形式呢蛔翅?
// 比如我們申明一個變量,但是我們希望變量中包含某個值時
let obj2: {name: string}
// 這樣是正確的
obj2 = {name: '景天'}
// 這樣就會報錯
obj2 = {}
// 寫多了也會報錯
obj2 = {name: '景天',age:18}

// 那么我們就是要age位谋,而且age也不確定有沒有山析,怎么寫呢?
let obj3: {name: string,age?: number}
// 這樣都正確
obj3 = {name: '景天'}
obj3 = {name: '景天',age:18}

// 但是實際開發(fā)中掏父,我們還會有不確定有多少其他屬性值笋轨,怎么處理呢?
let obj4: {name: string, [propName:string]:any}
// 這樣的話赊淑,除了要求的值爵政,其他隨便寫不寫,寫什么都無所謂了
obj4 = {
    name: '景天',
    age: 18,
    c: true
}
函數(shù)
// 如何設(shè)置函數(shù)的類型申明呢膏燃?
// 這表示函數(shù)兩個參數(shù)茂卦,都是number類型,返回值也是number類型
let fn1: (a:number,b:number) => number
fn1 = function(n1,n2) {
    return n1 + n2
}

// 函數(shù)中使用另一種類型限制
// ): number是限制返回值的類型的
function add(a: number,b:number): string {
    return String(a + b)
}
數(shù)組
/*
    array,兩種申明方式(這也是一種泛型的寫法)
    1. 類型[]
    2. Array<類型>
*/
// 純字符串?dāng)?shù)組
let arr: string[]
arr = ['a','b','c']
// 純數(shù)字?jǐn)?shù)組
let arr2: Array<number>
arr2 = [1,2,3]
元組
// tuple(元組):固定長度的數(shù)組
let yuanzu: [string,number]
yuanzu = ['111',222]
枚舉
// enum: 枚舉
// 申明一個枚舉類
enum Gender {
    male = 1,
    female = 0
}

let hh: {name: string,gender: Gender}
hh = {
    name: '景天',
    gender: Gender.male
}
類型的別名
// 類型的別名
type myType = string
// 這相當(dāng)于還是string
let ii: myType

// 但是這樣的話组哩,通常沒什么意義,而我們用字面量類型的時候处渣,有時候可以使用
type jjType = 1 | 2 | 3 | 4 | 5 | 6 
// 這樣無論我們多少個地方使用伶贰,都可以直接用了
let jj: jjType
let kk: jjType
let ll: jjType

// 任何類型都可以有別名
// 比如object
type obj = {
    x:number,
    y:number
}

// 別名的擴展
// 一個新的obj1在上面的obj的基礎(chǔ)上擴展
type obj1 = obj & {
    z: number
}

JS在ES6以后加的兩個類型

bigint
  • 意為比較大的整數(shù)
  • ES2020以后添加
// 括號里面可以是number 和 string
const bigNumber: bigint = BigInt(123)
const bigNumber2: bigint = 456n

console.log(bigNumber)   // 123n,打印發(fā)現(xiàn)是有個n在數(shù)字后面罐栈,但是我們使用值得時候黍衙,是沒有n的
console.log(bigNumber2)  // 456n
symbol
  • 意為全局唯一引用
const firstName = Symbol('name')
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市荠诬,隨后出現(xiàn)的幾起案子琅翻,更是在濱河造成了極大的恐慌位仁,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,222評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件方椎,死亡現(xiàn)場離奇詭異聂抢,居然都是意外死亡,警方通過查閱死者的電腦和手機棠众,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,455評論 3 385
  • 文/潘曉璐 我一進店門琳疏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人闸拿,你說我怎么就攤上這事空盼。” “怎么了新荤?”我有些...
    開封第一講書人閱讀 157,720評論 0 348
  • 文/不壞的土叔 我叫張陵揽趾,是天一觀的道長。 經(jīng)常有香客問我苛骨,道長篱瞎,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,568評論 1 284
  • 正文 為了忘掉前任智袭,我火速辦了婚禮奔缠,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘吼野。我一直安慰自己校哎,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,696評論 6 386
  • 文/花漫 我一把揭開白布瞳步。 她就那樣靜靜地躺著闷哆,像睡著了一般。 火紅的嫁衣襯著肌膚如雪单起。 梳的紋絲不亂的頭發(fā)上抱怔,一...
    開封第一講書人閱讀 49,879評論 1 290
  • 那天,我揣著相機與錄音嘀倒,去河邊找鬼屈留。 笑死,一個胖子當(dāng)著我的面吹牛测蘑,可吹牛的內(nèi)容都是我干的灌危。 我是一名探鬼主播,決...
    沈念sama閱讀 39,028評論 3 409
  • 文/蒼蘭香墨 我猛地睜開眼碳胳,長吁一口氣:“原來是場噩夢啊……” “哼勇蝙!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起挨约,我...
    開封第一講書人閱讀 37,773評論 0 268
  • 序言:老撾萬榮一對情侶失蹤味混,失蹤者是張志新(化名)和其女友劉穎产雹,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體翁锡,經(jīng)...
    沈念sama閱讀 44,220評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡蔓挖,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,550評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了盗誊。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片时甚。...
    茶點故事閱讀 38,697評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖哈踱,靈堂內(nèi)的尸體忽然破棺而出荒适,到底是詐尸還是另有隱情,我是刑警寧澤开镣,帶...
    沈念sama閱讀 34,360評論 4 332
  • 正文 年R本政府宣布刀诬,位于F島的核電站,受9級特大地震影響邪财,放射性物質(zhì)發(fā)生泄漏陕壹。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,002評論 3 315
  • 文/蒙蒙 一树埠、第九天 我趴在偏房一處隱蔽的房頂上張望糠馆。 院中可真熱鬧,春花似錦怎憋、人聲如沸又碌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,782評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽毕匀。三九已至,卻和暖如春癌别,著一層夾襖步出監(jiān)牢的瞬間皂岔,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,010評論 1 266
  • 我被黑心中介騙來泰國打工展姐, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留躁垛,地道東北人。 一個月前我還...
    沈念sama閱讀 46,433評論 2 360
  • 正文 我出身青樓圾笨,卻偏偏與公主長得像缤苫,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子墅拭,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,587評論 2 350

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