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

争论已经结束。大多数新的前端项目默认使用 TypeScript。人们不再争论是否要采用它。

真正的价值不仅仅在于捕捉拼写错误。它比最初的宣传要深刻得多。

类型提供了永不过时的文档。函数签名准确地告诉你一段代码需要什么以及它返回什么。如果开发者向联合类型(union type)添加了一个新选项,编译器会强制你更新代码的每一个部分。注释会腐烂,但类型不会。

重构从一项可怕的任务变成了安全的操作。在无类型的代码中,重命名一个字段感觉像是在赌博。在 TypeScript 中,你只需更改类型,编译器就会为你列出所有出错的代码行。这消除了触碰旧代码的恐惧。

类型还能提升你与 AI 协作的效率。

当你要求 AI 编辑无类型的 JavaScript 时,它是在猜测结构。它会犯错,从而导致生产环境错误。在 TypeScript 中,类型充当了规范。AI 了解规则。如果 AI 犯了错,编译器会立即捕捉到。类型将“看似合理的代码”转变为“经过验证的代码”。

类型不会拖慢你的速度。在 AI 工作流中,它们反而会加速你的进程。它们充当了护栏,让你能够信任生成的代码,而无需手动检查每一行。

有目的地编写你的类型:

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

TypeScript 将代码库转变为了一组强制执行的契约。这些契约实现了无畏的重构和可靠的 AI 辅助。

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

Source: https://dev.to/parsajiravand/typescript-won-heres-what-that-actually-bought-us-12m8