对于和JavaScript一样的数据类型不做介绍了。只介绍和JS不一样的数据类型。
Number , number中有一个大数BigIntegers
let big: bigint = 100n;
Array
指定元素类型有两种方式
let list: number[] = [1, 2, 3];
let list: Array<number> = [1, 2, 3];
Tuple
定义: 固定的元素数量,并且每个元素有固定的类型
// Declare a tuple type
let x: [string, number];
// Initialize it
x = ["hello", 10]; // OK
// Initialize it
incorrectly x = [10, "hello"]; // Error
Enum
在标准JS上增加枚举enum类型
enum Color {
Red,
Green,
Blue,
}
let c: Color = Color.Green; // 0
enum类型默认的值是从零开始,这里的值分别就是0,1,2
enum Color {
Red = 1,
Green,
Blue,
}
let c: Color = Color.Green;
设定了1就从1开始,分别为1,2,3
enum Color {
Red,
Green = 21,
Blue,
}
中间的某个元素设定了,后面的元素从它开始加1,前面的元素保持不变,分别为1,21,22
反查枚举名称
enum Color {Red = 1,Green,Blue,}
let c:Color = Color.Green;
let colorName: string = Color[2];
// 打印 'Green'
console.log('colorName', colorName);
如何实现的我们可以看看编译后的结果
var Color;
(function (Color) {
Color[Color["Red"] = 1] = "Red";
Color[Color["Green"] = 2] = "Green";
Color[Color["Blue"] = 3] = "Blue";
})(Color || (Color = {}));
var c = Color.Green;
var colorName = Color[2];
console.log('colorName', colorName);
可以看到Enum是通过立即执行函数实现的。
Color实现了两层映射,从元素到值,如'Red'-> 1; 从值到元素 1 -> 'Red'