一、原始数据类型
TypeScript反对与js简直雷同的数据类型,此外还提供了实用的枚举类型不便咱们应用。
1、布尔值-Boolean

let isDone:boolean = false;isDone = true;//如果给isDone赋值为非布尔的值,会提醒谬误

2、数字-Number
和js一样,除了反对十进制和十六进制字面量,还反对二进制和八进制字面量。

let n10 : number = 10 //十进制let n2 : number = 0b1010 //二进制let n8 : number = 0o12 //八进制let n16 : number = 0xa //十六进制

3、字符串-String
与js一样,可应用""胡或者''示意字符串。

let name : string = 'Liane'

4、undefined和null
与js一样,并且能够将null和undefined赋值给其余类型的变量。

let u : undefined = undefined;let n : null = null;// u = 12  //errorlet num : number = 0;let str : string = 'Liane';str = null; //不会提醒谬误num = undefined //不会提醒谬误

二、数组Array和元组Tuple
有两种定义方法:
第一种:

let list1: number[] = [1,2,3]

第二种:

let list2: Array<number> = [1,2,3]

两种定义方法都规定数组内的元素必须与定义时规定的数据类型保持一致,若须要保留不同数据类型的数组,则可应用元组-Tuple。
留神:元组类型在定义数组的时候,元素的类型和数组长度都会被限定。

let arr3: [string,number,boolean] = ['Liane', 18, true]let arr4: [number,number,number,string] = [1,2,3,'']

三、枚举
枚举是对js规范类型的补充,在生产开发当中,如果有些数据罕用,并且格局范畴是固定的,能够应用枚举类型将取值限定在肯定范畴内。例如一周只能有七天,色彩限定为红绿蓝等。
语法--枚举应用enum关键字来定义:

enum Days {Sun, Mon, Tue, Wed, Thu, Fri, Sat}console.log(Days['Sun'])  //0console.log(Days[0])   //'Sun'

枚举成员会被赋值为从0开始递增的数字,同时也会对枚举值到枚举名进行反向映射。

enum Color {red, green, blue}console.log(Color[0]) //'red'console.log(Color['red']) //0console.log(Color[0] === 'red') //trueconsole.log(Color) //{0: "red", 1: "green", 2: "blue", red: 0, green: 1, blue: 2}let color1 : Color = Color.red;//let color2 : Color = Color[0] //error,因Color[0]的值为'red'是string,因而会提醒谬误console.log(color1) //0

若不心愿枚举内的成员从0开始递增,可自定义成员的值,随后的值都会顺次累加1。

enum Days {Sun = 1, Mon, Tue, Wed, Thu = 100, Fri, Sat}console.log(Days.Mon) //2console.log(Days.Tue) //3console.log(Days.Fri) //101console.log(Days)//{1: "Sun", 2: "Mon", 3: "Tue", 4: "Wed", 100: "Thu", 101: "Fri", 102: "Sat", Sun: 1, Mon: 2, Tue: 3, Wed: 4, Thu: 100, …}

四、any
当咱们心愿一个数据类型能够存储任何类型的数据时,或者说当咱们不确定一个变量的相似时,能够应用any类型。例如该值可能来自用户输出,或第三方库等。

let arr: any[] = [100, '归去,也无风雨也无晴', true]console.log(arr[1].slice(3)) //也无风波也无晴console.log(arr[0].slice(3))  //无谬误提醒,编译可通过,但编译成js,在浏览器运行时报错了

长处:解决了不确定数据类型时,变量的申明定义。
毛病:应用any类型,在很多时候TypeScript动态查看的长处就体现不进去了

五、void
某种程度上来说,void类型像时与any类型相同,它示意没有任何类型。因而一个没有任何返回值的函数,能够定义它的类型是void。

//个别用来阐明函数的返回值不能是undefined和null之外的值function fun():void {    cosnole.log('我是一个没有返回值的fun')}fun()

六、Object
与js统一,示意一个Object类型的变量或者返回一个Object类型的返回值的函数

function fun(obj:object):object {    console.log(obj);    return {}}console.log(fun(1)) //errorconsoel.log(fun({name: 'Liane'}))

七、联结类型-Union Type
若一个变量的值能够为多种类型中的一种,能够应用联结类型。

function fun(a:number|string):string{    return a.toString()}console.log(fun(123)) //'123'

八、类型断言
能够用来手动指定一个值为某种数据类型。
语法:

1、<数据类型> 变量2、变量 as 数据类型

例如:咱们须要一个失去数字或字符串长度的办法

function getLength(a:number|string):number{    if((<string>a).length){//第一种形式        return (a as string).length//第二种形式    }else {        return a.toString().length    }}console.log(getLength(12345))//5console.log(getLength('01234')) //5

九、类型推断
TS会在没有明确指定类型的时候揣测出一个类型。
1、定义变量时赋值,则会推断变量为值对应的类型。
2、定义变量时未赋值,则推断该变量为any类型。

let a = 1;  //a为number类型//a = 'abc'; //error//a = false; //errorlet x;  //x为any类型x = 1;x = 'abc';x = true;