ts中为了让我们的编程更规范,增加了类型校验,ts中主要有以下数据类型:
-
数字类型(number)
-
字符串类型(string)
-
数组类型(array)
-
元组类型(tuple)
-
布尔类型(boolean)
-
枚举类型(enum)
-
任意类型(any)
-
null 和undefined
-
never
-
void
数字类型(number)
var num:number = 24; num = 8; console.log(num) //打印正确 8 // 如果给num赋一个字符串或者其他类型的值 num = "kobe" //会直接报错
字符串类型(string)
var str:string = "kobe" str = "sunday" //正确 str = 24; //报错
数组类型(array)
在ts中数组的定义方式有两种:
-
第一种
var arr:number[] = [1,2,3]; // 正确 var arr:string[] = ['1','2','3']; // 正确 var arr:number[] = [1,2,'3']; //报错同理在字符串数组中有其他类型也会报错
-
第二种
var arr:Array<number> = [1,2,3]; 和第一种一样,定义了数组类型之后,元素不可以有其他类型
元组类型(tuple)
元组类型是数组类型的一种,可以在数组中定义多类型元素。
var arr:[number,string] = [1,'sunday'] //正确 var arr:[number,string] = [1,2] //错误
布尔类型(boolean)
var flag:boolean = true;flag = false //正确 flag = 123 //错误
枚举类型(enum)
语法: enum name(枚举名) { 标识符 = 整型常数, 标识符 = 整型常数, 标识符 = 整型常数 }
enum Status {success = 1,failure = -1} var flag:Status = flag.success; console.log(flag) // 1
enum Color {red,yellow,'skyblue'} var c:Color = Color.red console.log(c) //0 如果标识符没有赋值,它的值就是下标
enum Color {red,yellow = 2,'skyblue'} var y:Color = Color.yellowconsole.log(y) // 2 var s:Color = Color.skyblueconsole.log(s) // 3
任意类型(any)
var num:any = 24; num = 'str' num = true; console.log(num) //true 任意类型的用处 var dom:any = document.getElementById('box') dom.style.color = 'blue'
null和undefined类型
var num:number;console.log(num) // 输出undefined 报错
var num:undefined;console.log(num) //输出 undefined 正确
var num:null; num=null;
//一个元素可能是 number类型 可能是null 可能是undefined var num:number | null | undefined; num=1234; console.log(num)
never类型
// never类型:是其他类型 (包括 null 和 undefined)的子类型,代表从不会出现的值 //这意味着声明never的变量只能被never类型所赋值。 var a:undefined; a=undefined; var b:null; b=null; var a:never; a=123; //错误的写法 a=(()=>{ throw new Error('错误'); })()
void类型
void类型 :typescript中的void表示没有任何类型,一般用于定义方法的时候方法没有返回值。
//表示方法没有返回任何类型 //正确写法 function run():void{ console.log('run') } run(); //错误写法 function run():undefined{ console.log('run') } run(); //正确写法 function run():number{ return 123; } run();