| null | js提供,ts继承了过来 | 非对象类型 | 
| undefined | ||
| string | ||
| number | ||
| boolean | ||
| bigint | ||
| symbol | ||
| object(Array Function Date,===) turple | 对象类型 | |
| void | ts 扩展 | ts扩展类型 | 
| never | ||
| enum | ||
| unknown | ||
| any | ||
| type | 关键字 | |
| interface | 关键字 | 
理解 TS 类型
js里的类型和值
而ts只有类型,没有值。
包装对象
包装和拆包
1  | const a = 123;  | 
非对象类型可以直接使用。
对象类型分类
 Array(不直接用,一般用在定义泛型上)
 Object(一般不用,不够精确)
 Function (一般不用,不够精确)
 …其他类型基本可使用
包装类型(number,string,boolean)
1  | 01 let a : boolean = new Boolean(1) ; //错误  | 
在TypeScript中,Number、String和Boolean分别是number、string和boolean的封装对象。
number
JS/TS 只有一种类型去表示数值。就是number。
整数(10进制数) 100
浮点数
1  | let fl = 12.001;  | 
2进制数
1  | let x2 = 0b10110;  | 
8进制数
1  | let x8 = 0o744;  | 
16进制数
1  | let x16 = 0x111b;  | 
正是因为没有区分多种数字类型,所以一般牵扯到小数计算会产生精度丢失问题。转为整数类型可解。
string(字符串)
一般用单引号或者双引号包裹的字符可以声明为字符串,js/ts 里只有字符串。还可以用模板字符串去表示(模板字符串是ECMAScript 6 之后提供的表示字符串的能力)。
boolean
一般只包含2个值(false, true),表示条件的结果,非正即假。
never
所有类型(包括null, undefined)的子类型,所以可以赋值给任何类型。
symbol
交叉类型&
将多个类型合为一个类型。可以使用每个类型的独有类型。
Union 类型 |
Union 后的类型,不确定是哪一个类型的时候,只能使用其共有类型,使用独有类型会报错。
1  | ```  | 
type A = {[string] : “a” | “b” | “c”}
interface A {
    [k: string]: “a” | “b” | “c”;
}
1  | 
  | 
类型断言
数组与元组
元组是数组的一个子集,一般是一个规定长度规定每个元素类型的数据结构。
具有以下特点:
元组的数据类型可以是任何类型。
在元组中,可以包含其他元组。
元组可以是空元组。
元组赋值必须元素类型兼容。
元组的取值同数组的取值,元素的标号从0开始。
元组可以作为参数传递给函数。
1  | let tuple1: [number, string, boolean] = [1,'', false]; // tuple1 type => [number, string, boolean];  | 
但如果依赖类型推导,那么会和预想的结果不一致。
1  | let tuple2 = [1,'', false]; // tuple2 type => <stirng|number|boolean>Array  | 
会是一个联合类型的数组类型。这是一个需要注意的点。
元组的获取元素与数组相同,都是通过下标进行访问。
元组的常见问题;
- 越界(越界会报错)
 
 不能访问超过tuple.length的元素
 元组解构超过tuple.length