sh-ty超高速的 Python 类型检查器

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 的类型系统这几年发展得很快:

  • typingPEP 484 / 544 / 563 / 695
  • ProtocolLiteralTypedDict
  • 越来越多「像静态语言一样写 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 的区别

维度mypyPyrightty
实现语言PythonTypeScriptRust
性能目标正确性正确 + 快极致快
架构复杂度高,但更底层
IDE 优先级极高
项目阶段成熟成熟早期(但野心大)

一句评价:

ty 是“从未来倒推设计”的类型检查器。

Github:https://github.com/astral-sh/ty
油管:https://youtu.be/ugiG3H6EPXg

Scroll to Top