微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

TypeScript的数据类型

ES6的数据类型

基本数据类型

  • Boolean
  • Number
  • String
  • Symbol
  • undefined
  • null

引用数据类型

  • Object
    • Array
    • Date
    • Function
    • ……

TypeScript的数据类型

TypeScript的数据类型在ES6的基础上添加了以下数据类型

  • void
  • any
  • never
  • 元组
  • 枚举
  • 高级类型

类型注解

相当于强类型语言中的类型声明,起到对变量的约束作用
在变量或函数后面加一个冒号,再加上类型名称
语法:(变量/函数):type

基本数据类型注解

在ts中给一个变量声明一个类型后,其值必须是该类型的值,否则在编译时会报错

let num:number;
num="hello world";

在这里插入图片描述

当给一个number类型的变量赋值为字符串,在编译时会给出错误。当把其值改为number类型时,可以成功编译

在这里插入图片描述

引用数据类型注解

数组

在ts中给一个变量声明为一个数组需要先指定数组中元素的类型,指定元素的数据类型后,元素的值必须是指定类型的值。
再指定元素的数据类型之后在使用[]指定该变量为一个数组

let num:number[]=[12,43];

如果使用Array指定一个变量为一个数组

let num:Array<number> = [12,43];

如果为数组元素指定多个类型

let num:Array<number| string> = [12,43];

表明数组的元素可以是number类型也可以是string类型,可以是纯number类型,可以是纯string类型可以是number和string的混合

函数

在给函数类型注解时,可以给函数的参数指定类型,也可以给函数的返回值指定类型
函数的参数指定类型

let add=(x:number,y:number)=>{
}

函数的返回值指定类型时与之前的写法不同

let add:(x:number,y:number)=>number
add=(a,b)=>a+b

对象

let obj:Object={};

这种方式声明类型只能声明变量的类型

let obj:{name:string,age:number}={name:"agf",age:12}

这种方式不仅可以声明变量的类型还可以声明对象属性的类型

void

表示没有任何返回值的类型,比如没有返回值的函数,这里的返回值是指使用return返回

let an = ()=>{}

any

any类型表示可以是任何类型,可以给变量赋值任何值

let x;//认为any类型

如果将变量定义为any类型,与js没有区别,也就没有必要使用ts因此不推荐使用

never

表示永远不会有返回值的类型
一种情况是一个函数抛出抛出一个异常,函数永远不会有返回值

let error =()=>{
	throw new Error("error")
}

另一种是死循环,函数永远不会执行完毕,永远不会有返回值

let endless=()=>{
	while(true){}
}

never与void的区别

void是指函数执行完毕后没有返回值并且是指函数不使用return返回,函数在没有使用return返回时,可以返回undefined的。
never是指在函数能够执行的情况下函数没有执行完毕或者函数不能执行。

枚举类型

一组具有名字的常量集合

//声明枚举
//数字枚举
enum Role{
	Reporter,
	Developer,
	Owner
}
//获取枚举成员
console.log(Role.Reporter) //0
//自定义枚举成员的值
enum Ane{
	Reporter=1,
	Developer,
	Owner
}
//后面的枚举成员的值会依次增加
console.log(Ane.Developer)//2
//字符串枚举
enum Message{
	Success="成功",
	Fail="失败"
}
//异构枚举
enum Answer{
	N,
	Y="yes"
}

枚举成员的值是只读类型,定义之后不能修改

枚举成员的类型

  1. 常量枚举成员
    常量枚举成员的值,在编译阶段被计算出来
  2. computed
    需要被计算的枚举成员,通常是函数表达式,不会再编译阶段被计算,会被保留到执行阶段,computed的枚举成员必须有初始值否则会报错。

常量枚举

用const声明的枚举会在编译阶段被移除
不需要一个对象而需要一个对象的值的时候就可以使用常量枚举,减少编译阶段的代码

const enume Month{
	Jan,
	Feb
}

枚举类型

在某些情况下,枚举和枚举成员都可以作为一种单独的类型存在。
第一种情况,枚举成员没有初始值

enum E {a,b}
let e : E = 3

第二种情况,所有的成员都是数字枚举

enum F {a=0,b=1}
let f : F = 3 // 枚举类型变量的值可以超出枚举成员的定义

第三种情况,所有成员都是字符串枚举
注意点:

  • 两种不同的枚举类型不可以比较
  • 字符串枚举类型变量的值只能是枚举成员的类型
enum G {a="apple", b="banana"}
let g1 : G = G.a //可以是 G.a 或 G.b
let g2 : G.a = G.a //只能是G.a

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐