一、原始数据类型
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 //error
let 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']) //0
console.log(Days[0]) //'Sun'
枚举成员会被赋值为从 0 开始递增的数字,同时也会对枚举值到枚举名进行反向映射。
enum Color {red, green, blue}
console.log(Color[0]) //'red'
console.log(Color['red']) //0
console.log(Color[0] === 'red') //true
console.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) //2
console.log(Days.Tue) //3
console.log(Days.Fri) //101
console.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)) //error
consoel.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))//5
console.log(getLength('01234')) //5
九、类型推断
TS 会在没有明确指定类型的时候揣测出一个类型。
1、定义变量时赋值,则会推断变量为值对应的类型。
2、定义变量时未赋值,则推断该变量为 any 类型。
let a = 1; // a 为 number 类型
//a = 'abc'; //error
//a = false; //error
let x; // x 为 any 类型
x = 1;
x = 'abc';
x = true;