联合枚举类型
这个类型是由所有联合枚举成员类型构成的联合类型。这个枚举类型中除了能够表示一个常量值外还能表示联合枚举成员类型。联合枚举成员类型是联合枚举类型的子类型,所以我们可以将联合枚举成员类型赋值给联合枚举类型。而联合枚举类型是由所有联合枚举成员类型构成的联合类型。由于联合枚举类型是由固定数量的联合枚举成员类型构成的联合类型,所以编译器能够利用这种性质对代码进行类型检查。
字面量类型
每一个字面量类型都只有一个可能的值就是字面量本身。boolean字面量有true字面量类型和false字面量类型。true的字面量只能接收true值,false字面量只能接收false值。boolean字面量类型是boolean类型的子类型,所以我们可以将boolean字面量类型赋值给boolean类型。字符串字面量和模板字面量都能够创建字符串,字符串字面量和不带参数的模板字面量都可以作为string字面量类型使用。
数字字面量有number字面量类型和bigint字面量类型。可以使用二进制、八进制等都可以作为数字字面量类型。除了正数数值外、负数也可以作为数字字面量类型。
单元类型
仅包含一个可能值的类型成为单元类型,我们也可以叫做单例类型。这种类型有undefined类型
、null类型
、void类型
、字面量类型
、联合枚举成员类型
和unique symbol类型
。
顶端类型
顶端类型有any
和unknown
。any类型使用any关键字作为标识。我们可以将任何类型的值赋值给any类型。在any类型上允许执行任意的操作而不会产生编译错误。但是对于长远来看,应该尽量在代码中使用any类型。unknown
类型可以将任何其他类型赋值给它。而且这个类型比any类型更安全。所以unknown类型只允许赋值给any类型和unknown类型,而不允许赋值给任何其他类型。unknown类型也不允许执行绝大部分操作,比如x + 2
或者y()
。但是any类型赋值不包括never
类型。unknown类型必须将其细化为某种类型。any类型就没有这个限制。