一、数字类型
let a:number = 20
a = 30 //编译通过
a = “xiaowang" //编译失败
一旦确定某个变量数据类型,意味着在内存里面已经分类好了指定的空间。
二、布尔类型
let boo:boolean = true
boolean类型值只能是true、false不能是其他的值
三、字符串类型
let username:string = "xiaowang"
在TS中我们的变量必须要有三要素
变量的名字、变量的类型、变量的初始值。
四、数组类型
语法一:
// 规定数组里面存放什么类型的值
let users:number[] = [1,2]
let users2:string[] = ["xiaowang","xiaofei"]
一旦确认了数组里存放的数据类型,只能存放对应数据类型的值。
let users =[1,2,true,"xiaowang"]
语法二:
// 告诉TS,类型位Array,Array里面存放 number类型
let user3:Array<number> = [1,2,3]
<数据类型>泛型语法。规定了数组里面只能存放number
// any
let user4:any = [1,2,true,"xiaowang"]
any这个类型,泛指所有的类型。一般确定了类型的情况不会any
五、元组(tuple)
元组类型属于数组的一种,元组类型允许你表示一个已知数组内容情况下使用。
// 元组是一种特殊的数组.规定了数组中每一个内容的类型
let user5:[number,boolean,string] = [1,true,"xiaowang"]
六、any类型
你可以给任何变量设置any类型。
let num:any = 123
num = "xiaofeifei"
any设计出来并不是让我们骗过编译器。
有些时候我们并不是变量应该设置位什么数据类型的时候,你就可以用any类型
const element:any = document.getElementById("root") //Node ReactNode
七、undefind和null
let password:undefined
let password:number | undefined;
console.log(password)
password = 12345
在ts中我们undefined和null变的不这么重要。每个变量的类型在变量定义的时候,很少用undefined或者null,可以配合其他类型 | 来定义
undefined和null的区别?
undefined == null //true
undefined === null //false
undefined是null的派生类(子类)。==的时候比较的值。 === 比较值又要比较类型。
八、枚举类型
枚举类型是对JS标准类型的一种补充。
在代码设计过程中有很多变量结果是一个状态。这个状态不好维护。
if(order==0){ //todo
//
}else if(order==1){
}
魔鬼数字(魔法数字)在编程规范中是不允许出现的。
如果我们开发过程中涉及到很多状态需要管理,我们可以用枚举将这些状态定义出来。以后代码中直接定义好的状态,不要直接写数字
// 订单状态
enum state {payError=0,paySuccess=1,payTimeout=2}
const order = {
name:"订单1",
status:state.payError
}
if(order.status == state.payError){
//
}else if(order.status == state.paySuccess){
}
枚举一般用到项目中对某些状态进行说明,订单状态、支付状态、一年四季
九、object类型
object类型可以表示三种结构
{}
[]
function(){}
let obj:object = {}
let obj2:object = []
let obj3:object = function(){}
如果我们要表示的类型为具体对象
let obj5:{id:number,name:string} = {id:1,name:"xiaow"}
console.log(obj5.id);
十、类型断言
let val:string | undefined
// ?.这个符号十es2020里面新增的表达式,当val没有length属性 不会执行
console.log((<string>val).length);
console.log((val as string).length);
console.log(val?.length);
断言有两种语法,在告诉编译器,开发者明确知道自己用的变量的什么类型,不用检测这个类型