2.TS 的数据类型
一、定义变量
TS 中创建变量有四个要素:
- 定义变量的关键字:
var
、let
、const
- 变量名
- 变量的数据类型
- 变量的初始值
语法结构如下:
let 变量名: 数据类型 = 初始值
注意,变量的初始值必须是当前定义的数据类型。
例如:
let a: number = 10;
二、TS 的数据类型
1、基础类型
- 数字
number
:TS 中不管是整数还是小数都属于number
类型; - 字符串
string
:单引号、双引号、ES6 的模板字符串都属于string
类型; - 布尔值
boolean
:true 和 false;
let a: number = 10;
let b: string = 'hello';
let c: boolean = true;
2、null 和 undefined
TS 中的 null 和 undefined,跟 JS 中的一样,null 类型下的数据只有 null 本身,undefined 类型下的数据也只有它自身。
let d: null = null;
let e: undefined = undefined;
在 TS 中,这两个数据类型本身的作用不是很大。
3、any 类型
any
表示任意数据类型,意味着我们可以将任何变量都设置成 any
类型。
let f: any = 1;
let g: any = 'hello';
但是,尽量不要使用该类型。
4、void
void
从概念来说,刚好和 any
相反,它表示没有任何类型。
通常,当一个函数没有返回值得时候,我们会将返回值的类型设置为 void
:
基础语法:
function 函数名(): 返回值类型 {
}
示例代码:
function foo(): void {
}
5、数组
TS 中要求数组中所有元素的数据类型必须一致,因为我们在通过 TS 定义数组时,必须先声明数组中子元素的数据类型。
基础语法:
let 变量名: 子项类型[] = 数组值;
示例代码:
let h: number[] = [1, 2, 3];
6、元组
元组类型,允许创建一个已知数组子项的数量和类型的数组,数组中子项的类型可以不一样。
基础语法:
let 变量名: [类型一, 类型二] = [值一, 值二];
示例代码:
let i: [number, string, boolean] = [1, 'a', true];
7、对象
基础语法:
let 变量名: { 属性名一: 数据类型, 属性名二: 数据类型 } = { 属性名一: 值, 属性名二: 值 }
示例代码:
let j: { name: string, age: number } = { name: '张三', age: 20 }
8、枚举
我们在实际开发中,很多时候会使用数字来表示一些状态。例如:
- 在设置性别时,会用数字 1 表示男性,用数字 0 表示女性;
- 在设置订单状态时,会用数字 0 表示订单支付失败,数字 1 表示订单支付成功,数字 2 表示订单超时…
大部分时候,我们没办法记住每一个数字所对应的含义,因此,TS 中提供了枚举的类型来描述每一个数字的含义。
基础语法:
enum 自定义名字 {
含义 = 数字一,
含义 = 数字二,
}
示例代码:
enum gender {
female = 1,
male = 0
}
const student = { name: '张三', age: 20, gender: gender.female }
console.log(student); // { name: '张三', age: 20, gender: 1 }
9、never
never
类型表示永远不存在的值的类型。
例如某一个函数中抛出了异常,对于该函数的返回值来说,就永远都不存在,因此该函数的返回值的类型可以设置为 never
。
示例代码:
function foo(): never {
throw new Error('错误')
}
10、unknow
unknow
是 TS 3.0 中新增的类型。它和 any
类似,任意类型的数据都可以设置为 unknow
。
示例代码:
let k: unknown = 1;
let l: unknown = 'hello';
unknow
和 any
的区别在于:
任何类型的值都可以赋值给 any
,同时,any
类型的值也可以赋值给任何类型。
let m:any = 1;
m = true;
let n: string = m;
任何类型的值都可以赋值给 unknow
,但是,unknow
类型的值只能赋值给 unknow
或 any
。
let o: unknown = "a";
let p: any = o;
// let q: string = o; // 报错
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步