TypeScript 基本数据类型解释
TypeScript 基本数据类型解释
数据类型
相比 JavaScript 而言,在每次声明变量的时候都必须要注明变量类型,并且在后续重新赋值的时候不能修改为其它类型(any 类型除外),此外又扩充了其它的数据类型
Array
有两种定义数组的方式,分别为:
let list: numer[] = [1, 2, 3]; // 字面描述 []
let list: Array<number> = [1, 2, 3]; // 数组泛型
上面两种方式需要注意的是,一旦声明变量为某种类型的数组,起每个子元素都必须符合其元素类型,否则会报错。
let list: boolean[] = [1, "你好", false]; // 必须全部是 boolean 类型
Tuple 元组
元组类型表示一个固定长度和类型的数组。需要注意的是元组一旦声明后,类型和长度不可更改,并且元素类型位置必须一一对应。
let list: [string, number];
list = ["你好", 123];
list = [123, "你好"]; // 位置必须一一对应
list.length = 3; // 长度不容许更改
list[0] = 123; // 元素类型必须一致
Enum 枚举
enum 是一种新的数据类型,通过声明一组好记的字符串来标记一组数字。默认情况下从 0 开始排序,也可以手动排序,可以通过字符串或者索引相互取值。本质是对象。
enum Color { Red, Blue, Green };
let c: Color = Color.Red; // 0
let name: string = Color[0]; // 'Red'
enum Color { Red = 1, Blue = 3, Green = 2 };
let name: string = Color[3]; // 'Blue'
enum Color { Red, Blue, Green };
// 转义为 JavaScript
{
"0": "Red",
"1": "Blue",
"2": "Green",
"Red": 0,
"Blue": 1,
"Green": 2
}
Unknown 未知
我们可以声明一个在当前还不确定类型的变量,让编译器或者使用的人知道它是一个任意类型的变量,可以随意更改。
let notSure: unknown = 123;
notSure = false;
Any 任何
any 类型表示不需要编译器检查类型,直接跳过。在旧的项目上比较适合使用。对于声明了 any 类型的对象来说,你可以访问它的任何属性,可以分配任何值,也可以调用属性方法。
let notSure: any = 4;
notSure = "你好";
notSure = false;
notSure.toFixed();
当你想要声明一个任意类型的数组时,可以注明 any 类型。
let list: any[] = [1, "你好", false];
list[4] = { name: "张三" };
Void 空白
void 类型表示没有任何类型,是空白的。一般用在没有返回值的函数上面,并且声明一个 void 类型的变量也只能赋值为 null 或者 undefined。
function warnUser(): void {
console.log("你好");
}
const unusable: void = undefined;
Never 绝不
never 类型表示那些永远不存在的值,一般我们用来放在返回 error 的时候。
function error(msg: string): never {
throw new Error(msg);
}
function fail(): never {
return error("这里是一个错误");
}
类型断言
当自己清楚的知道变量类型的时候,可以使用类型断言告诉编译器,我已经进行了检查。
类型断言有两种书写的方式:
let someValue: any = "你好";
let length: number = (<string>someValue).length;
let someValue: any = "你好";
let length: number = (someValue as string).length;
其它
不建议使用 Number,String,Boolean,Symbol,Object 声明变量类型