TypeScript中的数据类型
1、数字类型
typescript中的数据类型可以被赋值为数字,NaN,Infinity,还有进制数字。
let a: number = 10;
let b: number = NaN;
let c: number = Infinity;
let d: number = 0xA12; //十六进制数字
let e: number = 0b1010101; //二进制数字
let f: number = 0o75; //八进制数字
2、字符串类型
typescript中的字符串可以用单引号,也可以用双引号括起来,甚至可以用es6中的模板字符串。
// string
let str: string = "这是一个字符串"
let str1: string = '这是一个字符串'
let str2: string = `hello 这是一个模板字符串${a}`
3、布尔值类型
typescript中的布尔类型可以被赋值为true或者false。
// boolean
let flag: boolean = true;
let flag1: boolean = false;
4、数组类型
typescript中的数组类型可以像flow一样用 :Array<数据类型> 进行限制,也可通过 :数据类型 [] 进行限制。
// 数组
// Array<数据类型>
let arr: Array<number> = [1, 2, 3, 4];
// 数据类型[]
let arr1: number[] = [1, 2, 3, 4];
5、元组
typescript中的元组数据类型类似于python中的元组,里面的元素可以存放指定不同类型的数据。元组的元素可以通过下标进行访问。通过索引得到元组元素并修改其中的内容时,只能改变该索引位置定义的数据类型。如下代码中,定义了一个arr2元组,其中arr2[0]必须是数字类型,arr[1]必须是字符串类型。当我们要修改索引0的元素时,只能将其修改为数字类型的,而不能是其他类型的。
注意:当我们访问修改的元素超过元组的长度时,该元素默认的类型可以是该索引前面的所有数据类型。如我们访问了arr[2]此时我们即可以将其赋值为字符串,又可以将其赋值为数字。
// 元组(Tuple)
let arr2: [number, string] = [1, 'a'];
// arr2[0] = 'a';
// arr2[0] = 1000;
arr2[2] = 'a';
arr2[2] = 1;
// arr2[2] = [];
6、void空值
typescript中的void空值类型只能赋值为undefined。
// void 空值
let res: void = undefined;
7、undefined和null类型
typescript中的undefined数据类型只可以赋值为undefined,null类型只可以赋值为null。
// undefined
let res1: undefined = undefined;
// null
let res2: null = null;
8、任意类型any
typescript中当我们不确定要赋值为什么类型的变量的时候我们可以将其定义为any类型。any类型允许我们将变量赋值任意类型的数据。
// any 表示任意类型
let somevar: any = 10;
somevar = "abc";
somevar = [];
9、never类型
never类型一般用在不可能返回内容的函数的返回值类型设置。一般将变量设置为never类型没有意义。never需要用在没有尽头的函数,像死循环函数,像报错函数。
function test(): never{
while (true) {
}
}
10、object对象类型
typescript中的非基本数据类型都可以用对象类型,如对象,数组。也可以类似flow中的语法规定对象的参数。
// object类型
// let o: object = {};
// let o1: object = [];
// 对象类型
//这种方法和flow的限制对象参数的方法类似
let o: { name: string, age: number } = { name: "张学友", age: 18 };
11、枚举类型
当我们需要限制一个属性的取值,比如性别之只能取男,女,或者未知性别的时候我们就可以用到typescript的枚举类型。
// gender: 0 1 -1
enum Gender{
male = 1,
female = 0,
unknow = -1
}
let gender: Gender = Gender.male;
let obj = {
gender: Gender.male
}
12、类型断言
当我们明确的知道该变量的类型的时候,我们可以使用 <数据类型>的方式告诉typescript该变量是什么类型。类型断言常常用在我们需要调用某种变量特有的方法时,比如我们定义了一个any 类型的stri变量后先赋值为字符串,然后我们需要调用字符串的length属性获取字符串的长度,此时我们可以通过类型断言,告诉typescript变量stri是字符串类型,我们才可以调用length属性。
// 类型断言
let stri: any = "abc";
let len: number = (<string>stri).length;