数据类型
概述
- 类型声明是 TS 非常重要的一个特点
- 通过类型声明可以指定 TS 中变量(参数、形参)的类型
- 指定类型后,当为变量赋值时,TS 编译器会自动检查值是否符合类型声明,符合则赋值,否则报错
- 简而言之,类型声明给变量设置了类型,使得变量只能存储某种类型的值
- TypeScript 中的数据类型分为两大类
- 原始数据类型(基本数据类型)
- 对象类型(复杂数据类型)
- 常用的基本数据类型:number / string / boolean / undefined / null
- 自动类型判断
- TS 拥有自动的类型判断机制
- 当对变量的声明和赋值时同时进行的,TS 编译器会制动判断变量的类型
- 所以如果你的变量声明和赋值是同时进行的,可以省略掉类型声明
类型
类型 | 例子 | 描述 |
---|---|---|
number | 1,-2,3.4 | 任意数字 |
string | "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
原始数据类型
数字类型
代码语言:typescript复制使用关键字
number
定义数字类型
let decimal: number = 6.1; // 小数
let hex: number = 0xf00d; // 十六进制
let binary: number = 0b1010; // 二进制
let octal: number = 00744; // 八进制
let big: bigint = 100n;
字符串类型
代码语言:typescript复制使用关键字
string
定义字符串类型
let color: string = 'bule';
color = 'red';
let fullName: string = 'Law D';
let age: number = 12;
let sentence: string = `Hello, my name is ${fullName}.I am ${age} years old.`
// 其中 `` 用来定义 ES6 中的模板字符串,其效果等于
let sentence: string = 'Hello, my name is' fullName '.I am' age 'years old.'
布尔类型
代码语言:typescript复制使用关键字
boolean
定义布尔类型
let isDone: boolean = false;
注:非严格模式下 number、string、boolean 值都可以为空
Void类型
代码语言:typescript复制在 TypeScript 中,可以用
void
表示没有任何返回值的函数
function hello(): void {
alert("Hello TS");
}
let unuseable: void = undefined; // 声明但未赋值的变量值(找不到值)
Null类型
代码语言:typescript复制表示对象缺失
let nu: null = null; // 声明并已赋值(能找到,值就是null)
Undefined类型
代码语言:typescript复制用于初始化变量为一个未定义的值
let un: undefined = undefined;
- void 和 undefined 的区别
let un: undefined;
let num: number = un; // 可以将 undefined 类型的变量赋值给 number 类型的变量
let vo: void;
let num: number = vo; // void 类型的变量不能给 number 类型的变量赋值
undefined
和null
是所有类型的子类型