02Typescript的数据类型

typescript 中为了使编写的代码更规范,更有利于维护,增加了类型校验,在 typescript 中主要给我们提供了以下数据类型:

1
2
3
4
5
6
7
8
9
10
布尔类型(boolean)
数字类型(number)
字符串类型(string)
数组类型(array)
元组类型(tuple)
枚举类型(enum)
任意类型(any)
null 和 undefined
void类型
never类型

布尔类型(boolean)

1
2
3
var flag: boolean = true;
falg = 123; // 错误
flag = false; //正确

数字类型(number)

1
2
3
4
5
var num: number = 123;

num = 456; //正确

num = "str"; //错误

字符串类型(string)

1
2
3
4
5
var str: string = "this is ts";

str = "haha"; //正确

str = true; //错误

数组类型(array)

ts 中定义数组有三种方式:

1
2
3
4
5
6
7
8
// 1.第一种定义数组的方式
var arr: number[] = [11, 22, 33];

// 2.第二种定义数组的方式
var arr2: Array<number> = [11, 22, 33];

// 3.第三种
var arr3: any[] = ["131214", 22, true];

元组类型(tuple)

元组类型属于数组的一种:

1
2
3
var arr: Array<number> = [11, 22, 33];

let arr2: [number, string] = [123, "this is ts"];

枚举类型(enum)

随着计算机的不断普及,程序不仅只用于数值计算,还更广泛地用于处理非数值的数据。
例如:性别、月份、星期几、颜色、单位名、学历、职业等,都不是数值数据。
在其它程序设计语言中,一般用一个数值来代表某一状态,这种处理方法不直观,易读性差。
如果能在程序中用自然语言中有相应含义的单词来代表某一状态,则程序就很容易阅读和理解。
也就是说,事先考虑到某一变量可能取的值,尽量用自然语言中含义清楚的单词来表示它的每一个值,
这种方法称为枚举方法,用这种方法定义的类型称枚举类型。

1
2
3
4
5
6
enum 枚举名{
标识符[=整型常数],
标识符[=整型常数],
...
标识符[=整型常数],
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
enum Flag {
success = 1,
error = 2,
}

let s: Flag = Flag.success;
let e: Flag = Flag.error;

console.log(s); // 1
console.log(e); // 2

enum Color {
blue,
red,
"orange",
}

var c: Color = Color.red;

console.log(c); //1 如果标识符没有赋值 它的值就是下标

任意类型(any)

1
2
3
var num: any = 123;
num = "str";
num = true;

null 和 undefined

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var num: undefined;
console.log(num); //undefined

var num2: number | undefined;
console.log(num2); //undefined
num2 = 123;
console.log(num2); // 123

// null同上
var num3: null;
console.log(num3); // null

//一个元素可能是 number类型 可能是null 可能是undefined
var num: number | null | undefined;
num = 1234;
console.log(num); // 1234

void 类型

typescript 中的 void 表示没有任何类型,一般用于定义方法的时候方法没有返回值。

1
2
3
4
5
6
7
8
9
10
11
12
function run(): void {
console.log("run");
}

run();

// 有返回值时需要定义类型
function run(): number {
return 123;
}

run();

never 类型

never 类型是其他类型 (包括 null 和 undefined)的子类型,代表从不会出现的值。这意味着声明 never 的变量只能被 never 类型所赋值。

1
2
3
4
5
6
var a: never;

// a=123; //错误的写法
a = (() => {
throw new Error("错误");
})();