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ū)別。