Skip to content

刷题指南

配合本教程的六大套路一起刷。

先说方法

1. 别死磕

每题限时 15 分钟,做不出来直接看答案,看懂后关掉默写一遍。

这类题的卡点通常不是逻辑难,而是你不知道某个语法特性存在(比如条件类型的分配律、元组展开、infer extends)。那是知识缺口,硬想想不出来。

2. 前 15 题的目标是"见过的套路够多",不是"自己想出来"

跟刷算法题前期完全一样。前 10 题晕是标准流程,大概到第 15 题左右会突然通。

3. 每天 2-3 题

比周末刷 20 题有效得多——类型直觉需要睡觉来固化。

4. 先学后刷

如果你还没读过类型层心智模型,先去读。题库是学完之后的检验,不是学习材料。

资源

资源特点
type-challenges题目量最大,事实标准,有中文 README
TypeHero浏览器里直接做,能看别人的解法,有 Learning Tracks
TypeScript Exercises15 题连贯故事,偏业务建模

停止标准

两个可验证的指标,达成就可以停:

  1. 刷完 easy + medium(约 117 题),到达 L2 上沿
  2. 随手打开 type-fest 的任意工具类型源码,能不看解释说出它在干嘛

hard 挑 10-20 道做,extreme 直接跳过。目标不是通关,是读三方库源码不卡壳

题目列表

怎么对答案

本页的每道题都有折叠答案。点标题展开。

Easy试试看:实现 MyPick查看答案

从类型 T 中选出属性 K,构造成一个新的类型。不能使用内置的 Pick

ts
interface Todo {
  title: string
  description: string
  completed: boolean
}

type TodoPreview = MyPick<Todo, 'title' | 'completed'>
// 期望 { title: string; completed: boolean }

基于 VitePress 与 Twoslash 构建