typeScript中为了是编写的代码更规范,更有利于维护,增加了类型校验(在声明时注明了数据的类型,再重新赋值时如果类型不一致会报错)
为了使代码更加规范,利于维护,所以我们在声明变量的时候在后面要声明该变量的数据类型,如果赋值为number类型,重新赋值为string类型的值时会报错。
布尔类型(boolean)
var flag1:boolean=true;
//var(关键字) flag1(变量名):boolean(数据类型)=true;(值)
var flag2:boolean=false;
// flag1=123 在这里重新赋值时,因为类型校验的原因,声明的为boolean类型,现在赋值number类型数据报错
console.log(flag1) //true
console.log(flag2) //false
***看了上面一个,后面的大家都应该明白了,后面的声明变量时都会有数据类型验证,所后面因为数据类型错误的就不再讲了。***
数字类型(number)
var a:number=123;
console.log(a);// 123
a=12.3
console.log(a);//12.3 支持浮点类型
字符串类型(string)
var str:string="this id ts";
console.log(str);//this id ts
str="你好ts";
console.log(str);//你好ts
数组类型(array): ts中定义数组有种方式
//1.第一种定义数组的方式
var arr1:number[]=[1,58,84,8,5,7,5];
var arr2:string[]=["php","js","java","c++"];
var arr3:any[]=["str",123,true];
console.log(arr1) //[1, 58, 84, 8, 5, 7, 5] 注明数据类型为number[],所以每一项都必须是number类型,不然报错
console.log(arr2) //["php","js","java","c++"] 注明数据类型为string[],所以每一项都必须是string类型,不然报错
console.log(arr3) //["str",123,true];注明数据类型为string[](任意类型),所以每一项都可以是任意类型。
//2.第二种定义数组的方式
var arr4:Array<number>=[1,8,6,8];
var arr5:Array<string>=["php","js","java","c++"];
var arr6:Array<any>=["str",123,true];
console.log(arr4) //[1,8,6,8] 注明数据类型为number[],所以每一项都必须是number类型,不然报错
console.log(arr5) //["php","js","java","c++"] 注明数据类型为string[],所以每一项都必须是string类型,不然报错
console.log(arr6) //["str",123,true];注明数据类型为string[](任意类型),所以每一项都可以是任意类型。
元祖类型(tuple) : 其实说他是数组类型也不为过,只不过需要指定每一位的数据类型
var arr:[string,number,boolean]=["ts",3.18,true]
// var arr(变量名):[string(字符串),number(数字),boolean(布尔)]=["ts",3.18,true]
console.log(arr)//["ts", 3.18, true] 每一位的数据类型都被指定,如果该项不是指定的类型,则报错。
枚举类型(enum)
概念:随着计算机的不断普及,程序不仅用于数值计算,还有更广泛的用于处理非数值的数据,例如性别,月份,星期几,颜色,单位名,学历,职业等,都不是数值数据。在其它程序设计语言中,一般用一个数值来代表某一状态,这种处理方法不直观,易读性差,如果能在程序中用自然语言中有相应含义的单词来代表某一状态,策程序就很容易阅读和理解。也就是说,事先考虑到某一变量可能取的值,尽量用自然语言中含义清除的单词来表示它的每一个值,这种方法定义的类型成为枚举类型。
//例如支付状态 1 成功 -1 失败 如果定义了枚举类型就很方便知道1、-1分别代表什么
enum Flag {success=1,error=-1}
var f:Flag=Flag.success
console.log(f)// 1 success赋值了所以打印1
enum Color{red,blue=5,orange}
var c:Color=Color.blue;
console.log(Color.red);//0 如果未赋值则打印下标值
console.log(c);//5 赋值等于5 打印赋值
console.log(Color.orange); // 6 如果前面有被赋值的,则按照被赋值的那个按照顺序依次排下去
任意类型(any)
var num:any=123;
console.log(num);//123
num="sd";
console.log(num);//sd
num=true;
console.log(num);//true
//任意类型可赋值任何类型的值,不会报错
null和undefined:其它数据类型(never类型)数据的子类型
var num:number;
console.log(num); //报错
var num1:undefined;
console.log(num1); //undefined
var num2:number|undefined;
console.log(num2);//undefined 声明一个变量为num2 但是,未赋值,打印undefined
num2=123;//为变量num2赋值
console.log(num2);//打印123
var num3:null;
console.log(num3)
var num4:number | null | undefined
console.log(num4) //undefined
num4=123;
console.log(num4) //123
void类型:typeScript中的void表示,没有任何类型,一般用于定义方法的时候方法没有返回值。
//表示该方法没有任何返回值
function run():void{
console.log('run')
}
run();
//表示该方法有返回值(有返回值的时候,声明返回值的类型)
function run():number{
return 123
}
run()
never类型:其他类型(包括null和undefined)的子类型,代表从不会出现的值
a=(()=>{
throw new Error('错误');
})