typescript 中为了使编写的代码更规范,更有利于维护,增加了类型校验,在 typescript 中主要给我们提供了以下数据类型
- 布尔类型(boolean)
- 数字类型(number)
- 字符串类型(string)
- 数组类型(array)
- 元组类型(tuple)
- 枚举类型(enum)
- 任意类型(any)
- null 和 undefined
- void 类型
- never 类型
布尔类型(boolean)
1 2 3 4
| var flag = true;
flag = 456;
|
typescript 中为了使编写的代码更规范,更有利于维护,增加了类型校验
写 ts 代码必须指定类型
1 2 3 4 5 6 7
| var flag: boolean = true;
flag = false;
console.log(flag);
|
数字类型(number)
1 2 3 4 5 6 7
| var num: number = 123;
num = 456;
console.log(num);
num = "str";
|
字符串类型(string)
1 2 3 4 5
| var str: string = "this is ts";
str = "haha";
str = true;
|
数组类型(array)
ts 中定义数组有两种方式
- 第一种定义数组的方式
1 2 3
| var arr: number[] = [11, 22, 33];
console.log(arr);
|
- 第二种定义数组的方式
1 2 3 4 5
| var arr: Array<number> = [11, 22, 33];
console.log(arr);
var arr = ["1", "2"];
|
元组类型(tuple)
属于数组的一种
1 2 3
| var arr: Array<number> = [11, 22, 33];
console.log(arr);
|
1 2 3
| let arr: [number, string] = [123, "this is ts"];
console.log(arr);
|
枚举类型(enum)
随着计算机的不断普及,程序不仅只用于数值计算,还更广泛地用于处理非数值的数据。
例如:性别、月份、星期几、颜色、单位名、学历、职业等,都不是数值数据。
在其它程序设计语言中,一般用一个数值来代表某一状态,这种处理方法不直观,易读性差。
如果能在程序中用自然语言中有相应含义的单词来代表某一状态,则程序就很容易阅读和理解。
也就是说,事先考虑到某一变量可能取的值,尽量用自然语言中含义清楚的单词来表示它的每一个值,
这种方法称为枚举方法,用这种方法定义的类型称枚举类型。
enum 枚举名{
标识符[=整型常数],
标识符[=整型常数],
…
标识符[=整型常数],
};
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| enum Flag { success = 1, error = 2 }
let s: Flag = Flag.success;
console.log(s);
enum Flag { success = 1, error = 2 }
let f: Flag = Flag.error;
console.log(f);
|
1 2 3 4 5 6 7 8 9
| enum Color { blue, red, "orange" }
var c: Color = Color.red;
console.log(c);
|
1 2 3 4 5 6 7 8 9 10 11 12
| enum Color { blue, red = 3, "orange" }
var c: Color = Color.red;
console.log(c);
var c: Color = Color.orange; console.log(c);
|
1 2 3 4 5 6 7 8 9
| enum Err { "undefined" = -1, "null" = -2, "success" = 1 }
var e: Err = Err.success;
console.log(e);
|
任意类型(any)
1 2 3
| var oBox: any = document.getElementById("box");
oBox.style.color = "red";
|
null 和 undefined
其他(never 类型)数据类型的子类型
1 2 3
| var num: number;
console.log(num);
|
1 2 3
| var num: undefined;
console.log(num);
|
1 2 3 4 5
| var num: number | undefined;
num = 123;
console.log(num);
|
定义没有赋值就是 undefined
1 2 3 4 5 6 7
| var num: number | undefined;
console.log(num);
var num: null;
num = null;
|
一个元素可能是 number 类型 可能是 null 可能是 undefined
1 2 3 4 5
| var num: number | null | undefined;
num = 1234;
console.log(num);
|
void 类型
typescript 中的 void 表示没有任何类型,一般用于定义方法的时候方法没有返回值。
es5 的定义方法
1 2 3 4 5
| function run() { console.log("run"); }
run();
|
表示方法没有返回任何类型
正确写法
1 2 3 4 5
| function run(): void { console.log("run"); }
run();
|
错误写法
1 2 3 4 5
| function run(): undefined { console.log("run"); }
run();
|
正确写法
1 2 3 4 5
| function run(): number { return 123; }
run();
|
never 类型
never 类型是其他类型 (包括 null 和 undefined)的子类型,代表从不会出现的值。这意味着声明 never 的变量只能被 never 类型所赋值。
这意味着声明 never 的变量只能被 never 类型所赋值。
1 2 3 4 5 6 7
| var a: undefined;
a = undefined;
var b: null;
b = null;
|
1 2 3 4 5 6
| var a: never;
a = (() => { throw new Error("错误"); })();
|