TypeScript 02-基本类型

112 阅读3分钟

一、数字类型

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);

断言有两种语法,在告诉编译器,开发者明确知道自己用的变量的什么类型,不用检测这个类型