一、object 类型
小 object 与 大 object 区别
-
小 object
-
能存储非原始类型的值(如数组、对象)
-
不能存储原始类型(如 string、number)
-
使用场景较少,类型限制仍较宽泛
-
-
大 object
-
可存储几乎所有类型(除
null和undefined) -
实际开发中与
any类似,类型安全性低
-
类型声明建议
-
使用 字面量类型 明确属性结构,增强可读性与准确性
-
可选属性通过
?标记(08:10):interface User { name: string; age?: number; } -
类型定义的语法风格灵活(逗号、分号、换行均可)
-
可使用 索引签名:
interface Dictionary { [key: string]: string; }
二、函数类型与数组类型
函数类型
-
可通过 接口 或 类型别名 定义:
type Add = (x: number, y: number) => number;
数组类型
-
两种定义方式:
const arr1: string[] = ['a', 'b']; const arr2: Array<number> = [1, 2]; -
元组(Tuple):限制类型和长度的数组:
const tuple: [string, number] = ['Tom', 25];
三、枚举类型
数字枚举
-
自动递增:
enum Direction { Up, // 0 Down, // 1 Left, // 2 Right // 3 } -
支持反向映射:
const d = Direction[0]; // 'Up'
字符串枚举
-
无自动递增与反向映射:
enum Status { Success = 'SUCCESS', Fail = 'FAIL' }
枚举优势
-
防止拼写错误
-
提升代码可读性
-
集中管理常量
四、联合类型与交叉类型
联合类型
- 一个变量可以是多种类型之一:
let value: string | number;
交叉类型
- 同时具备多个类型的特性:
type A = { name: string }; type B = { age: number }; type C = A & B; // { name: string; age: number }
命名规范
- 类型名首字母大写,提高协作一致性
五、void 类型与函数返回值
函数返回值类型
-
明确返回类型可减少错误,提高维护性:
function log(): void { console.log('Logging...'); } -
void类型 ≠ 空返回值,可以返回undefined
注意事项
-
即使声明
void,函数仍可能返回值(不推荐) -
不同数组方法对返回值要求不同:
-
forEach无需返回值 -
map和find需有返回结果
-
箭头函数小心简写问题:
const fn = () => 'hello'; // 实际返回 string
const log = () => { return 'hi'; }; // 返回 string,若声明 void 会冲突
总结
TypeScript 类型系统通过 object、函数、数组、元组、枚举、联合与交叉类型、void 等丰富机制,提供了强大的静态类型支持。理解和灵活运用这些概念,可以显著提升代码质量、协作效率和开发体验。