为什么用 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" 不能赋给 numberJS
// 编译产物:类型注解被完全擦除 function calcTotalTS(price, count) { return price * count; } console.log(calcTotalTS(99, 3)); // 297 // console.log(calcTotalTS('99', 3)); // '999999':编译期拦不住的就是 JS 的老毛病
本节要点TS 的本质收益 = 把运行时错误提前到编译期,用类型契约替代口头文档。




