数据类型
概述
- 类型声明是 TS 非常重要的一个特点
- 通过类型声明可以指定 TS 中变量(参数、形参)的类型
- 指定类型后,当为变量赋值时,TS 编译器会自动检查值是否符合类型声明,符合则赋值,否则报错
- 简而言之,类型声明给变量设置了类型,使得变量只能存储某种类型的值
- TypeScript 中的数据类型分为两大类
- 原始数据类型(基本数据类型)
- 对象类型(复杂数据类型)
- 常用的基本数据类型:number / string / boolean / undefined / null
- 自动类型判断
- TS 拥有自动的类型判断机制
- 当对变量的声明和赋值时同时进行的,TS 编译器会制动判断变量的类型
- 所以如果你的变量声明和赋值是同时进行的,可以省略掉类型声明
类型
类型 | 例子 | 描述 |
number | 1,-2,3.4 | 任意数字 |
string | "hi",'hi',`hi` | 任意字符串 |
boolean | true、false | 布尔值true或false |
字面量 | 其本身 | 限制变量的值就是改字面量的值 |
any | * | 任意类型 |
unknown | * |
类型安全的any |
void | 空值(undefined) | 没有值(或undefined) |
never | 没有值 | 不能是任何值 |
object | (name: '罗') | 任意的 js 对象 |
array | [1, 2, 3] | 任意的 js 数组 |
tuple | [4, 5] | 元组,TS 新增类型,固定长度的数组 |
enum | enum(A, B) | 枚举,TS 中新增类型 |
- 在 ES6 和 ES10 中引入了新的基本数据类型,分别是 Symbol 和 BigInt
原始数据类型
数字类型
使用关键字
number
定义数字类型
letdecimal: number=6.1; // 小数lethex: number=0xf00d; // 十六进制letbinary: number=0b1010; // 二进制letoctal: number=00744; // 八进制letbig: bigint=100n;
字符串类型
使用关键字
string
定义字符串类型
letcolor: string='bule'; color='red'; letfullName: string='Law D'; letage: number=12; letsentence: string=`Hello, my name is ${fullName}.I am ${age}years old.`// 其中 `` 用来定义 ES6 中的模板字符串,其效果等于letsentence: string='Hello, my name is'+fullName+'.I am'+age+'years old.'
布尔类型
使用关键字
boolean
定义布尔类型
letisDone: boolean=false;
注:非严格模式下 number、string、boolean 值都可以为空
Void类型
在 TypeScript 中,可以用
void
表示没有任何返回值的函数
functionhello(): void { alert("Hello TS"); } letunuseable: void=undefined; // 声明但未赋值的变量值(找不到值)
Null类型
表示对象缺失
letnu: null=null; // 声明并已赋值(能找到,值就是null)
Undefined类型
用于初始化变量为一个未定义的值
letun: undefined=undefined;
- void 和 undefined 的区别
letun: undefined; letnum: number=un; // 可以将 undefined 类型的变量赋值给 number 类型的变量letvo: void; letnum: number=vo; // void 类型的变量不能给 number 类型的变量赋值
undefined
和null
是所有类型的子类型