Skip to main content

类型系统

基本类型

number类型

string类型

boolean类型

boolean类型只有两个值:true和false.

undefined

null类型

symbol类型

bigint类型

bigint是es2020新增的数据类型.

object类型

包装对象类型

原始类型,表示最基本不可再分的值.

由于包装对象的存在,导致每一个原始类型的值都有包装对象和字面量两种情况,这句话该如何理解?

为了区分这两种情况,ts对五种原始类型分别提供了大写和小写两种类型 Number和number String和string Boolean和boolean Bigint和bigint Symbol和symbol

大写类型同时包含包装对象和字面量两种情况,小写类型只包含字面量,不包含包装对象.

ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
let str1: string;
let str2: String;
str1 = "hello china"
str2 = "hello china"
console.log(str1, str2);
str1 = new String('hello world22');
str2 = new String('hello world22');
console.log(str1,str2);

建议原始数据类型统一使用小写类型, 1.小写的原始数据类型占更少的内存空间,速度快 2.ts把很多内置方法的参数定义成小写类型,使用大写会报错.

Object类型和object类型

Object类型代表的js里广义的对象,即除undefined和null之外的其他任意类型. object类型的代表js里狭义的对象,即可用字面量表示的对象,只包含对象,数组和函数,不包含原始数据类型的值.

值类型

值类型和常量的区别?

联合类型-union types

多个类型组成的一个新类型,使用符号|表示

ts
1

如果一个变量属于联合类型且有多种类型时,往往需要类型缩小,区分该值到底属于哪一种类型.

类型缩小是ts处理联合类型的标准方法,凡是遇到可能为多种类型的场合,都需要先缩小类型.

type命令

type命令用来定义一个类型的别名

ts
1

typeof运算符

在ts中typeof运算符有两种含义,一种是js中的值运算,另一种是ts扩展的类型运算.

ts
1

typeof的参数只能是标识符,不能是需要运算的表达式,其次typeof的参数不能是类型.

类型的兼容性

子类型,