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 声明变量类型


Comments

Leave a Comment