TypeScript 赢了。它为我们带来了什么。

争论已经结束。开发者们不再争论是否要使用 TypeScript。新的前端项目默认都会使用它。

最初的卖点是在应用崩溃前捕捉拼写错误。但这并不是真正的益处。真正的价值在于更深层次的东西。

TypeScript 创建了永不过时的文档。函数签名会准确地告诉你函数需要什么以及返回什么。如果你向一个类型添加了新选项,编译器会向你展示所有需要更新代码的地方。而注释只会停留在那里,并对你撒谎。

重构变得安全了。在无类型的代码中,重命名一个字段感觉像是在赌博。你只能搜索字符串并祈祷一切顺利。在 TypeScript 中,你只需更改类型,编译器就会为你列出每一行出错的代码清单。你不再畏惧自己的代码库。

类型也有助于你使用 AI。

AI 工具在 JavaScript 中猜测代码是危险的。它会犯错,从而导致生产环境错误。在 TypeScript 中,类型充当了规范。AI 知道什么是被允许的。如果 AI 犯了错,编译器会立即捕捉到。类型将“看似合理的代码”转变为“正确的代码”。

人们过去常说类型会拖慢你的速度。但在 AI 世界中,类型会加快你的速度。它们充当了护栏。你可以充满信心地接受生成的代码,而不是逐行手动检查。

使用以下规则编写更好的类型:

  • 使用联合类型(unions)而不是多个布尔值。像 "loading" | "error" | "ready" 这样的状态可以防止出现不可能的状态。
  • 为你的领域类型命名。使用 type Cents = number 可以让你的意图变得清晰。
  • 避免使用 "any"。改用 "unknown" 并进行类型收窄(narrow it down)。"any" 会破坏你的安全网。
  • 让类型推断(inference)发挥作用。你不需要标注所有内容。只需标注你的函数签名和导出的 API,然后让其余部分自然流动。

TypeScript 不仅仅是捕捉拼写错误。它将代码库转变成了强制执行契约的系统。这些契约实现了无畏的重构和可靠的 AI 工具。

我们开始使用类型是为了停止 Bug。我们持续使用它们,是因为它们是其他一切的基础。

来源:https://dev.to/parsajiravand/typescript-won-heres-what-that-actually-bought-us-53lo