0074. TS Github 仓库
- 1. 🎯 本节内容
- 2. 🫧 评价
- 3. 🤔 TypeScript GitHub 仓库包含哪些内容?
- 4. 🤔 如何利用 Issues 模块?
- 5. 🤔 给 TS 项目贡献代码流程是?
- 6. 🤔 如何查看、撰写 TypeScript 设计提案(Design Proposals)?
- 7. 🤔 如何查看 TS 新版的开发进度?
- 8. 🔗 引用
1. 🎯 本节内容
- TypeScript GitHub 仓库结构
- Issues 的使用简介
- 贡献流程简介
- 设计提案(Design Proposals)
- 里程碑(Milestones)
2. 🫧 评价
TypeScript 的 GitHub 仓库(microsoft/TypeScript)是了解 TypeScript 发展动态、报告问题、参与社区的核心平台。
相比官方文档,GitHub 仓库的价值在于:
- 透明度:可以看到所有开发决策的讨论过程
- 实时性:新特性的提案和进度都在这里公开
- 互动性:可以直接向核心团队反馈问题
- 学习性:阅读源码和 PR 是深入理解 TS 的最佳途径
虽然仓库内容偏技术性,但它是解决疑难问题、了解设计理念的最佳资源。建议进阶开发者定期关注 Issues 和 Discussions。
3. 🤔 TypeScript GitHub 仓库包含哪些内容?
3.1. 核心组成部分
| 组成部分 | 用途 | 访问地址 |
|---|---|---|
| Issues | Bug 报告、功能请求 | 链接 |
| Pull Requests | 代码提交、功能开发 | 链接 |
| Projects | 开发路线图、完成进度 | 链接 |
| Wiki | 贡献指南、架构文档 | 链接 |
| Releases | 版本发布历史 | 链接 |
| src/ | TypeScript 编译器源码 | 链接 |
3.2. 重要文件和目录
TypeScript/
├── src/ # 源代码目录
│ ├── compiler/ # 编译器核心
│ │ ├── parser.ts # 语法解析器
│ │ ├── scanner.ts # 词法扫描器
│ │ ├── binder.ts # 符号绑定
│ │ ├── checker.ts # 类型检查器
│ │ ├── emitter.ts # 代码生成器
│ │ ├── program.ts # 程序管理
│ │ ├── types.ts # 类型定义
│ │ ├── utilities.ts # 工具函数
│ │ ├── moduleNameResolver.ts # 模块解析
│ │ ├── commandLineParser.ts # 命令行解析
│ │ ├── diagnosticMessages.json # 诊断消息
│ │ └── sys.ts # 系统接口
│ │
│ ├── services/ # 语言服务(IDE支持)
│ │ ├── services.ts # 语言服务主入口
│ │ ├── completions.ts # 代码补全
│ │ ├── goToDefinition.ts # 跳转定义
│ │ ├── findAllReferences.ts # 查找引用
│ │ ├── utilities.ts # 服务工具函数
│ │ ├── types.ts # 服务类型定义
│ │ └── codefixes/ # 代码修复
│ │ ├── importFixes.ts
│ │ └── fixCannotFindModule.ts
│ │
│ ├── server/ # TSServer(编辑器服务器)
│ │ ├── session.ts # 会话管理
│ │ ├── editorServices.ts # 编辑器服务
│ │ ├── project.ts # 项目管理
│ │ └── protocol.ts # 通信协议
│ │
│ ├── tsc/ # 命令行编译器入口
│ │ └── tsc.ts
│ │
│ ├── tsserver/ # TSServer入口
│ ├── lib/ # 内置类型声明文件
│ ├── harness/ # 测试框架
│ └── testRunner/ # 测试运行器
│
├── tests/ # 测试用例
│ ├── cases/ # 测试案例
│ │ ├── compiler/ # 编译器测试
│ │ ├── conformance/ # 规范测试
│ │ └── fourslash/ # 语言服务测试
│ └── baselines/ # 基准输出
│
├── built/ # 构建输出目录
│ └── local/ # 本地构建
│
├── scripts/ # 构建脚本
├── Herebyfile.mjs # 构建配置
├── package.json # 项目配置
├── CONTRIBUTING.md # 贡献指南
└── README.md # 项目说明2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
4. 🤔 如何利用 Issues 模块?
4.1. Issue 标签分类
| Label 标签 | 含义 | 适用场景 |
|---|---|---|
| Bug | 编译器 Bug | 遇到明确的错误行为 |
| Suggestion | 功能建议 | 提议新特性或改进 |
| Question | 使用疑问 | 不确定是否是 Bug(应优先去 Discussions) |
| Design Limitation | 设计限制 | TypeScript 有意为之的行为 |
| Working as Intended | 按预期工作 | 不是 Bug,是正确行为 |
| Duplicate | 重复问题 | 已有相同 Issue |
你可以在 Issues 面板中输入 label:xxx 来查看都有哪些 Label,可以在 Label 面板中查看关于该 Label 的描述信息。

4.2. 搜索 Issue 的技巧
查看已知的 Bug
is:issue label:Bug is:open,查询现在的一些已知问题。

也可以加上更加具体的关键字,比如 generics,is:issue label:Bug is:open generics,这样就是查询具体查询跟泛型相关的 bug。

查看已批准但未实现的特性
is:issue label:Suggestion label:Committed,查询接下来会实现的新特性。

查找已知的性能问题
is:issue label:"Domain: Performance"

查看社区投票最多的提议
is:issue label:Suggestion sort:reactions-+1-desc

目前(25.11)排名第一的是 #6579

更多查询技巧
更多查询技巧,可以参考 GitHub 搜索技巧。
4.3. 提交 Issue 的最佳实践
TypeScript Version: 5.3.2
Search Terms: "generic constraint", "conditional type"
Expected behavior: 类型应该被正确推断为 `string`
Actual behavior: 推断为 `unknown`
Code:
```ts
type Test<T> = T extends string ? T : never
type Result = Test<'hello'> // 期望 'hello',实际 unknown
```2
3
4
5
6
7
8
9
10
11
12
13
14
标题:TypeScript 坏了
内容:
我的代码不工作,求助!
[没有版本信息]
[没有代码示例]
[没有错误信息]2
3
4
5
6
7
8
好的报告能让你的问题更好的被维护人员理解,并更快得到解决。
其实,如果你确实有问题需要反馈,只需要点击【New Issue】按钮,然后按照官方提供的 Issues 模板填写信息就行了,不需要刻意去记怎么写才更加规范。
5. 🤔 给 TS 项目贡献代码流程是?
通用的 PR 流程:
- Fork 仓库
- 创建分支
- 修改代码
- 添加测试
- 运行测试
- 提交 PR
- 代码审查
- 合并
准备工作:
# 1. Fork 并克隆仓库
git clone https://github.com/YOUR_USERNAME/TypeScript.git
cd TypeScript
# 2. 安装依赖
npm install
# 3. 构建项目
npm run build
# 4. 运行测试
npm test2
3
4
5
6
7
8
9
10
11
12
6. 🤔 如何查看、撰写 TypeScript 设计提案(Design Proposals)?
重要提案通常以 Issue 形式存在,标签为 Suggestion + Committed,你可以在 Issue 中查看社区成员的交流讨论。一定程度上可以帮你更好地了解 TS 某个新特性具体是如何被提出、讨论、并落地实现的。
经典提案示例:
| 提案 | Issue | 版本 | 核心内容 |
|---|---|---|---|
| Template Literal Types | #40336 | 4.1 | 模板字符串类型 |
| Variadic Tuple Types | #39094 | 4.0 | 可变元组类型 |
satisfies Operator | #47920 | 4.9 | satisfies 关键字 |
| Const Type Parameters | #51865 | 5.0 | const 泛型参数 |
如果你也有好的提案,想要让 TS 提供支持的话,可以参考官方的这篇文档:Writing Good Design Proposals,可以帮你了解撰写提案的一些规范。
7. 🤔 如何查看 TS 新版的开发进度?
每个 TypeScript 版本都有对应的 Milestones(里程碑),可以查看:
- 计划包含的功能
- 已完成的 PR
- 待解决的 Issue
访问链接 👉 Milestones 页面
