教程
共 17 篇深度教程。
TS·08 实战总结:读懂 pi 的一个真实工具与 agent 主循环
把前八篇学的语法拼起来,逐行读懂 pi 的一个真实内置工具(typebox schema → Static 派生类型 → execute 处理器 → AgentTool 契约)与 agent 主循环(流式消费模型事件 → 分派工具调用 → 校验参数 → 回填结果)。读完你能自己读 pi。
TS·07 异步与流式:Promise、async/await、与 async generator
从 Promise 与 async/await(对照 Python asyncio)到 Promise.all 并发、AbortSignal 取消,最后讲清 pi 流式返回 LLM 输出的核心:async generator(async function*)+ for await...of。读懂这章就读懂了 pi 的事件流。
TS·06 类与模块:封装、契约、与 import/export
类的字段/构造器/访问修饰符(private/public/readonly)、implements 契约、extends 继承(含 class extends Error), 以及 ESM 模块的具名导出、import type/export type、barrel 与 declare module。用 pi 的 Agent、FileError、EventStream 讲。
TS·05 泛型:参数化的类型、约束、与工具类型
泛型函数/接口/类、约束 extends、默认类型参数 = T,以及 pi 大量使用的工具类型 (Partial/Pick/Omit/Record/Extract/ReturnType)。用 pi 的 Tool<TParameters>、EventStream<T,R> 讲透"类型也能当参数"。
TS·04 窄化与类型守卫:安全地处理不可信的数据
编译器如何在 if/switch 里自动收窄类型(typeof/in/instanceof),如何用 `x is T` 谓词函数写自定义 类型守卫,以及如何用 unknown + 守卫安全地消化来自 LLM/外部世界的不可信数据。素材取自 pi 的错误处理与工具参数校验。
TS·03 联合类型与可辨识联合:pi 为什么不用 enum
TypeScript 最有特色、也是 pi 用得最狠的一招:字符串字面量联合取代 enum,再用带 tag 字段的 可辨识联合(discriminated union)+ switch 窄化,建模 LLM 的流式事件与消息。这是读懂 pi 事件系统的钥匙。
TS·02 数据的形状:interface 与 type
用 interface 和 type 别名描述对象的"形状":可选属性 ?、readonly、extends、Record、以及结构化类型 (被编译器检查的鸭子类型)。素材来自 pi 的内容块类型、options 配置对象与 FileSystem 契约。
TS·01 值、类型、函数:声明、标注与推断
TypeScript 的地基:const/let、基本类型标注与类型推断、函数参数/返回标注、可选参数与默认参数、 数组与对象字面量类型。全部用 pi 里的真实小函数(calculate、getCurrentTime)做示例。
TS·00 入门与心智模型:TS = JS + 会被擦除的类型层
系列开篇。给 Python 背景的读者建立 TypeScript 心智模型:类型只在编译期存在、运行时被完全擦除; 用 pi 这个真实 AI coding-agent 框架的 tsconfig、npm workspaces、ESM barrel 讲清"怎么把仓库跑起来读代码"。