let x = 1; x = 'a' 完全合法。团队协作时这是灾难——调用同"> let x = 1; x = 'a' 完全合法。团队协作时这是灾难——调用同"> let x = 1; x = 'a' 完全合法。团队协作时这是灾难——调用同">
TypeScript 词条目录
前端Wiki/TypeScript/基础/认识 TypeScript

为什么用 TypeScript

JS 是动态类型,变量类型随时可变:let x = 1; x = 'a' 完全合法。团队协作时这是灾难——调用同事写的 API,参数叫 id,你不知道该传数字还是字符串,只能翻源码或跑一遍试错。

TS 的价值在于"契约 + 文档":函数签名就是最可靠的 API 文档;重构时改一个接口,所有受影响的调用点立刻批量标红。VS Code 本身就是几百万行 TS 写的,大型项目几乎离不开它。

  • 动态类型让 Bug 只在运行时暴露,调试成本远高于编译期
  • 类型即文档:函数签名一眼看清入参与返回,注释都不会过期
  • 重构安全:改一处类型,编译器帮你定位所有调用点
TS
// 没有类型的世界:运行时才知道炸了
function calcTotal(price, count) {
  return price * count;
}
// calcTotal('99', 3)  -> '999999',字符串重复拼接的静默错误

// TS 版本:错误在编辑器里就标红
function calcTotalTS(price: number, count: number): number {
  return price * count;
}
// calcTotalTS('99', 3);   // ❌ 类型 "99" 不能赋给 number
JS
// 编译产物:类型注解被完全擦除
function calcTotalTS(price, count) {
  return price * count;
}
console.log(calcTotalTS(99, 3));      // 297
// console.log(calcTotalTS('99', 3)); // '999999':编译期拦不住的就是 JS 的老毛病
本节要点TS 的本质收益 = 把运行时错误提前到编译期,用类型契约替代口头文档。