Typescript的數(shù)據(jù)類型

1. 基本數(shù)據(jù)類型

let title = '王二'
let age = 18
let loading = true
let obj = null
let total = undefined

對比的寫法

let title:string = '王二'
let age:number = 18
let loading:boolean = true
let obj:null = null
let total:undefined = undefined

上面都是一個變量,一種類型,那么如何一個變量多種類型呢

let title:number|string = 18

表示變量title可能是數(shù)字或者字符串,多種數(shù)據(jù)類型中的一種,TS中稱為聯(lián)合類型

2. 引用數(shù)據(jù)類型

定義數(shù)組

let arr = [1, 2, 3]

對比的寫法

let arr:number = [1, 2, 3]
let arr:Array<number> = [1, 2, 3]

寫法的含義表示數(shù)組的每一項都是數(shù)字,長度不固定

已知數(shù)組的長度和類型:在TS中稱為元組類型

let arr: [string, number] = [‘王二', 18]

表示數(shù)組只能是兩項,第一項是字符串,第二項是數(shù)字,不能多,不能少

定義對象

let obj = {
  name: '王二',
  age: 18
}

對比的寫法

interface Props {
  name: string,
  age: number
}

let obj: Props = {
  name: '李四',
  age: 18
}

console.log(obj)

表示name是字符串類型,age是數(shù)字類型,只能有兩個屬性,不能多,不能少

interface 在TS中稱為接口,用來描述對象的形狀

interface Props {
  name: string,
  age: number,
  title?:string
}

問好和冒號表示該屬性可能有可能沒有

3. 枚舉類型

表示值可能出現(xiàn)的情況,如性別是男是女,固定的,數(shù)量不多

enum Gender {
  BOY,
  GIRL
}

console.log(Gender.BOY) // 0
console.log(Gender.GIRL) // 1

編譯之后

"use strict";
var Gender;
(function (Gender) {
    Gender[Gender["BOY"] = 0] = "BOY";
    Gender[Gender["GIRL"] = 1] = "GIRL";
})(Gender || (Gender = {}));
console.log(Gender.BOY); // 0
console.log(Gender.GIRL); // 1

可以指定默認值

enum Gender {
  BOY = 1001,
  GIRL = 1002
}

console.log(Gender.BOY) // 1001
console.log(Gender.GIRL) // 1002

常數(shù)枚舉

const enum Gender {
  BOY,
  GIRL
}

console.log(Gender.BOY) // 0
console.log(Gender.GIRL) // 1

編譯之后

"use strict";
console.log(0 /* BOY */); // 0
console.log(1 /* GIRL */); // 1

3. 任意類型

let todo:any = 'go home'

不建議使用,為了強類型校驗,建議給每個變量都定義好數(shù)據(jù)類型

4. 函數(shù)返回值

函數(shù)有返回值的情況

function todo(a: number): number {
  return a
}

函數(shù)沒有返回值使用void

function todo(a: number): void {
  console.log(a)
}

函數(shù)拋出錯誤,永遠不會執(zhí)行完成(如死循環(huán)),使用never

function demo(): never {
  throw new Error('出錯了')
}

5. 類型斷言

在這里插入圖片描述

通過斷言成數(shù)字再進行調(diào)用

let a:number|string;
console.log((a as number).toFixed(2))
console.log((<number>a).toFixed(2))

不能斷言成聯(lián)合類型中不存在的類型

6. 字面量類型

通過type關(guān)鍵字進行定義

type Gender = 1 | 2;
let boy:Gender = 1;
let girl:Gender = 2;

表示幾個值中的某一個,聯(lián)合類型表示多種類型中的一種。限制值和限制類型的區(qū)別。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容