ty 是由 Astral 公司(知名工具 uv、Ruff 的研发团队)基于 Rust 语言开发的超高速 Python 类型检查器兼语言服务程序。
它的运行速度是 mypy、Pyright 这类主流工具的10~100 倍,不仅能输出详尽易懂的错误提示信息,还支持代码自动补全、悬停查看注解等 IDE 核心功能,同时完美适配大型项目开发,也兼容「部分类型注解」的开发模式。可通过命令 uvx ty check 直接试用该工具。借助 ty,开发者能提前排查代码潜在 Bug,通过实时反馈大幅提升编码效率,在 VS Code 等编辑器中显著优化开发生产力。
一句话概括:
ty 是一个用 Rust 编写的、极致追求性能的 Python 静态类型检查器 + 语言服务器,目标是成为下一代 Pyright / mypy。
为什么需要一个新的 Python 类型检查器?
Python 的类型系统这几年发展得很快:
typing、PEP 484 / 544 / 563 / 695Protocol、Literal、TypedDict- 越来越多「像静态语言一样写 Python」的工程实践
但现实是:
- mypy:规则严谨,但慢、工程化体验偏“学术”
- Pyright:速度快,但实现复杂、体量巨大(TypeScript)
- 大型 Python 项目中,类型检查已经成为 CI 的性能瓶颈
Astral 团队的判断很直接:
Python 的类型检查,已经到了「必须重写一次」的阶段。
ty 是什么?它不是“又一个 mypy”
ty 不是一个简单的 lint 工具,而是一个完整的类型分析引擎:
- ✅ 静态类型检查器(Type Checker)
- ✅ 语言服务器(LSP)
- ✅ 增量分析
- ✅ 面向大型代码库设计
它的定位更接近于:
“Rust 级性能 + Python 类型系统的工程级实现”
核心设计目标:速度优先
用 Rust 重写一切
ty 的第一性原则只有一个:快。
- 使用 Rust 实现
- 强类型 + 零成本抽象
- 内存布局、并发、生命周期都可控
这使得 ty 在理论上具备:
- 比 Python 实现快 数量级
- 比 TypeScript 实现更贴近底层
增量类型分析(Incremental Analysis)
传统类型检查的问题是:
改一行代码 → 全项目重新分析
ty 的策略是:
- 精细化依赖图
- 只重新分析受影响的最小子图
- 为 IDE 场景优化,而不是只为 CLI
这对 大型仓库 + 高频编辑 非常关键。
类型系统不是“能跑就行”,而是“结构正确”
ty 并不只是“检查注解对不对”,而是试图构建:
- 类型之间的约束系统
- 类型推断路径
- 类型合并、交集、细化(narrowing)
这意味着它不是 hack,而是长期可演进的类型引擎。
ty ≠ 只给 CLI 用,它是 LSP 优先的
ty 从一开始就假设自己会运行在编辑器里。
支持的典型能力:
- 悬停类型提示(hover)
- 跳转定义(go to definition)
- 类型错误即时反馈
- 自动导入(未来)
这让 ty 更像是:
Python 世界的 rust-analyzer
而不是一个“跑完给你一堆报错”的工具。
它和 Pyright / mypy 的区别
| 维度 | mypy | Pyright | ty |
|---|---|---|---|
| 实现语言 | Python | TypeScript | Rust |
| 性能目标 | 正确性 | 正确 + 快 | 极致快 |
| 架构复杂度 | 中 | 高 | 高,但更底层 |
| IDE 优先级 | 低 | 高 | 极高 |
| 项目阶段 | 成熟 | 成熟 | 早期(但野心大) |
一句评价:
ty 是“从未来倒推设计”的类型检查器。
Github:https://github.com/astral-sh/ty
油管:https://youtu.be/ugiG3H6EPXg