原始数据类型包括:boolean、number、string、null、undefined 以及 ES6 中的新类型symbol和 ES10 中的新类型bigint
注意:boolean和Boolean、number和Number是不同的,其它基本类型一样(除null、undefined以外),一个是基本数据类型,一个是包装函数

Array

  • 最简单的方式是 number[]、string[]
  • 数组泛型 Array、Array
  • 用接口表示数组(常用来表示类数组)。js中Array在某种意义上算是属性值为number的对象。 ```typescript interface NumberArray {
  1. [index: number]: number;

} let fibonacci: NumberArray = [1, 1, 2, 3, 5]; // NumberArray 表示:只要索引的类型是数字时,那么值的类型必须是数字。

  1. <a name="ukfR9"></a>
  2. #### 类数组
  3. 类数组(Array-like Object)不是数组类型,比如 arguments:<br />事实上常用的类数组都有自己的接口定义,如 IArguments, NodeList, HTMLCollection 等:
  4. ```typescript
  5. function sum() {
  6. let args: {
  7. [index: number]: number;
  8. length: number;
  9. callee: Function;
  10. } = arguments;
  11. }

Tuple(元组)

元组类型允许表示一个已知元素数量和类型的数组,各元素的类型不必相同

  1. let x: [string, number];

Enum(枚举)

使用枚举类型可以为一组数值赋予友好的名字,默认情况下,从0开始为元素编号。你也可以手动的指定成员的数值

  1. enum Color {Red = 1, Green=2, Blue}
  2. let c: Color = Color.Green;
  3. let colorName: string = Color[2]; //可以根据枚举的值得到它的名字

Object

表示非原始数据类型
Object类型的变量只是允许你给它赋任意值,但是却不能够在它上面调用任意的方法,即便它真的有这些方法

Any

编译阶段还不清楚类型的变量指定一个类型,跳过类型检查器的检查
变量如果在声明的时候,未指定其类型,那么它会被识别为任意值类型

Unkonwn

与any一样,unkonwn变量接受任何值。但当尝试使用unkonwn类型的变量时,TypeScript会强制执行类型检查

Void

表示没有任何类型,当一个函数没有返回值时,你通常会见到其返回值类型是void
声明一个void类型的变量没有什么大用,因为你只能为它赋予null(只在—strictNullChecks未指定时)和undefined

Null和Undefined

默认情况下null和undefined是所有类型的子类型,null和undefined可以赋值给其它类型的变量
然而,当你指定了—strictNullChecks标记,null和undefined只能赋值给any和它们各自的类型

Never

表示永不存在的值的类型
例如,never类型是那些总是会抛出异常或根本就不会有返回值的函数表达式或箭头函数表达式的返回值类型; 变量也可能是never类型,当它们被永不为真的类型保护所约束时。
never类型是任何类型的子类型,也可以赋值给任何类型,没有任何类型可以赋值给never

类型断言

最好使用 as 来进行类型断言

关于Number、Symbol和Object等

这些类型不属于语言的基本类型,并且几乎在任何时候都不应该被用作一个类型