为了使编写的代码更规范,更有利于维护,增加了类型校验,写 ts 代码必须指定类型。typescript中除了es5中的常见数据类型之外还多了元组类型tuple、枚举类型enum、任意类型any、void类型、never类型等。
图片来源于网络,侵删
先记录一下TypeScript的集中数据类型
1:布尔类型
let flag:boolean=true; flag=false; console.log(flag)
打印:
2:number数字类型
let num:number=123; num=456; console.log(num);
3:字符串类型(string)
let str:string='this is ts'; str='wangxiaoting'; console.log(str);
4:数组类型(arr)
//ts定义数组有两种方法 //1:第一种定义数组的方法 let arr:number[]=[11,22,33]; console.log(arr);
//2第一种定义数组的方法 let arr:Array<number>=[11,22,33]; console.log(arr);
5:元组类型(tuple) 属于数组的一种
//可以给每一个位置指定一个类型 let arr:[number,string]=[123,'1233']; console.log(arr);
6:枚举类型
enum Flag{success=1,error=2}; let s=Flag.success; console.log(s);
打印下标 如果标识符没有赋值,它的值就是下标
//官方例子 enum Color{bule,red,'green'}; let c=Color.red; //打印下标 如果标识符没有赋值,它的值就是下标 console.log(c);
打印下标 如果标识符赋值,它的值就是赋的值4
//打印下标 如果标识符赋值,它的值就是赋的值4 enum Color{bule,red=4,'green'}; let c=Color.red; console.log(c);
//下标为5 enum Color{bule,red=4,'green'}; let c=Color.green; console.log(c);
状态码例子
//状态码 enum Err{'unidefined'=-1,'null'=-2,'success'=1}; let c=Err.null; console.log(c);
7:any任意类型
//可以指定任何类型的值 let num : any=123456; num='str'; num=true; console.log(num)
打印结果
8:undefined和空类型null
//定义赋值123 let num :number|undefined; num=123; console.log(num)
//定义未赋值就是undefined let num :number|undefined; console.log(num)
//空类型null let num :null; num=null; console.log(num)
9:void无类型
void表示没有任何类型,一般用于定义方法的时候没有返回值
//表示方法没有任何返回类型 function run():void{ console.log('wangxiaoting') } run();
对比:
//表示方法有返回类型,返回number类型 function run():number{ // return的必须是number类型 return 89; } run();
10:never类型:其他类型
//never类型:其他类型(包括null和undefined)的子类型,代表从不会出现的值
//这就意味着声明never的变量只能被never类型所赋值
一般指定类的写法:
let a:undefined; a=undefined; console.log(a)
//a只能是数字类型,若是写成了其他类型就会报错 let a:number; a=234567; console.log(a)
never类型的写法
let a:never; //a=123; //错误写法 a = (() => { // 正确的写法 throw new Error('错误'); })()