CodeRoadMap
首页路线题库资源库文章社区
CodeRoadMap

程序员的学习成长路线图。内容免费开放,登录后可同步路线图与课时进度。

由 程序员柏风 独立维护 · 关于作者

学习

  • 路线图
  • 课程
  • 面试题
  • 文章
  • 我

更多

  • 资源
  • 社区
  • 关于作者
  • 内容说明

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
TypeScript 进阶/课时/集合类型
RawBlame
课时目录12 节

TypeScript 进阶

  1. 01TS 进阶地图
  2. 02原始类型深入
  3. 03集合类型
  4. 04断言与收窄
  5. 05内置工具类型
  6. 06高级类型
  7. 07类与 OOP
  8. 08函数类型进阶
  9. 09装饰器
  10. 10命名空间
  11. 11工具链
  12. 12综合练习

集合类型

array、tuple、object、enum、hybrid-types。

30 分钟

集合类型

数组、元组、对象字面量、枚举与混合类型是日常建模的主力。本课在 typescript-essentials 基础上深入 array、tuple、object、enum、hybrid-types,为 API 响应与表单 DTO 建立精确结构——这在 nestjs-essentials 的 Entity/DTO 与 nextjs-essentials 的 fetch 数据类型中随处可见。

学习目标

  • 区分 T[] 与只读元组、可变长度元组
  • 使用 as const 与字面量联合替代部分 enum
  • 建模「对象 + 可调用」的混合类型

数组与元组

// 同质数组
type LessonSlug = string;
const slugs: LessonSlug[] = ["tsa-intro", "tsa-primitives"];

// 固定长度元组:位置语义
type Point2D = [x: number, y: number];
const origin: Point2D = [0, 0];

// 可变元组 rest
type HeadTail = [string, ...number[]];
const row: HeadTail = ["track", 1, 2, 3];

// 只读元组
type RGB = readonly [number, number, number];

object 与 Record

// object:非原始类型的对象
function logObj(obj: object): void {
  console.log(JSON.stringify(obj));
}

// Record:键值映射
type TrackMap = Record<string, { title: string; level: string }>;

const tracks: TrackMap = {
  "typescript-advanced-essentials": {
    title: "TypeScript 进阶",
    level: "intermediate",
  },
};

enum 与 const 对象

// 数字 enum(注意反向映射)
enum Order {
  Asc,
  Desc,
}

// 推荐:const 对象 + 字面量联合
const LessonStatus = {
  Draft: "draft",
  Published: "published",
} as const;

type LessonStatus = (typeof LessonStatus)[keyof typeof LessonStatus];
// "draft" | "published"

混合类型(Hybrid Types)

interface Counter {
  (start: number): string;
  interval: number;
  reset(): void;
}

function getCounter(): Counter {
  const fn = ((start: number) => String(start)) as Counter;
  fn.interval = 1000;
  fn.reset = () => {};
  return fn;
}

练习

  • 用元组类型描述 [slug, title, durationMinutes]
  • 将 platform 中某 enum 改写为 as const + 联合类型
  • 为带 call 签名的工具函数设计 hybrid interface

小结

集合类型决定数据形状;元组保位置语义,const 对象替代 enum 更 tree-shake 友好。 下一课断言与收窄。

加载本节练习…
← 上一课原始类型深入下一课 →断言与收窄