一个练习工程,不是一份教程。
目标:从工具和语言基础开始,一步步走到能独立搭起一个完整的互联网应用。 路线全景见 ROADMAP.md。
为「有工程经验,但基础是空的」这种状态而写。
典型症状:能靠 AI 把功能做出来,项目也上线过,但是——
- 报错看不懂,第一反应是整段复制给 AI
- 代码能跑,但说不清为什么这么写就对了
- 换个稍微不一样的场景,又得从头问一遍
- 心里清楚这样下去不行,但不知道该从哪儿补
这不是能力问题,是顺序问题:工具用得比原理熟,框架学得比语言早。 这个工程把顺序倒回来。
不是让你读文章,是让你写代码通过测试。
每个练习都是这个结构:
stage-1-typescript/03-narrowing/
├── NOTES.md ← 讲解:这个概念解决什么问题
├── exercise.ts ← 你写代码的地方(初始是不完整的)
├── exercise.test.ts ← 测试:它一开始是红的,你的任务是让它变绿
└── solution.ts ← 参考答案(做完再看)
红色是起点,不是错误。 测试一开始就该失败——那是它在告诉你"还差什么"。
你现在看到的这些文件在 GitHub 的云端仓库里。 学习要在你自己的电脑上进行,所以第一件事是把它拉下来。
完全没接触过终端 / Git / Node? 别在这里硬啃,直接去 👉 stage-0-tools/README.md 那里从"终端是什么"开始讲,一步都不跳。
已经有基础的话,三条命令:
git clone https://github.com/Renkos1/MyLearn.git
cd MyLearn
npm install然后确认环境没问题:
npm run doctor这条命令会逐项检查你的 Node、npm、Git、依赖装得对不对, 哪一项没过,它会直接告诉你该敲什么命令去修。
学习期间你主要就用这几条,不用背,忘了回来看:
| 命令 | 干什么 | 什么时候用 |
|---|---|---|
npx vitest |
监听模式跑测试,改完代码自动重跑 | 🌟 做练习时一直开着 |
npx vitest 03 |
只跑模块 03 的测试 | 专注一个练习时 |
npm run check |
类型检查(TypeScript 编译器) | 想确认类型写对没 |
npm run doctor |
环境自检 | 环境出问题时 |
npm run progress |
看学习进度 | 想知道走到哪了 |
这是理解 TypeScript 的第一个关键点,值得现在就说清楚:
npx vitest验证的是运行时行为——你的代码跑起来,结果对不对npm run check验证的是类型——你的类型标注对不对
它们是两件独立的事。类型在代码编译成 JavaScript 时会被全部删掉, 运行时根本不存在"类型"这个东西。所以:
类型检查过了 ≠ 代码能跑对 代码跑对了 ≠ 类型写得好
两条都绿,练习才算完成。
这个工程的内容由 AI 助手在云端生成,推送到 GitHub 分支上。 所以当有新内容时,你在自己电脑上拉取更新:
git pull如果你在练习文件里写了自己的代码(你应该写),拉取时可能遇到冲突。
不用慌,stage-0-tools/03-git-github.md 里专门讲了这种情况怎么处理。
练习卡住时,不要直接问 AI 要答案。
不是因为用 AI 可耻——这个工程本身就是 AI 写的。 是因为读懂答案和写出答案是两种不同的能力,而你缺的恰好是后一种。 看到答案的那一瞬间会产生"我懂了"的感觉,那个感觉是假的。
卡住了该怎么正确地用 AI(当教练,不当代笔), 写在 👉 docs/how-to-learn.md
| 路径 | 内容 |
|---|---|
| ROADMAP.md | 完整架构全景 + 三档深度分级 + 阶段规划 |
| stage-0-tools/ | 工具与环境:终端、Node、Git、编辑器 |
| stage-1-typescript/ | TypeScript 语言与类型思维(当前 MVP) |
| stage-2-node/ | Node 运行时:事件循环、流、HTTP |
| docs/how-to-learn.md | 学习方法:怎么摆脱"看得懂写不出" |
| docs/offline-learning.md | 📱 不在电脑旁时学什么:书、播客、离线思考题 |
| docs/CONTEXT.md | 项目背景与决策记录(换设备/换对话时给接手者看) |