JavaScript 与 TypeScript 的主要区别
TypeScript 是 JavaScript 的一个严格语法超集,意味着所有合法的 JavaScript 代码本身就是合法的 TypeScript 代码,但 TypeScript 在此基础上扩展了静态类型系统和一系列高级特性。两者的核心差异主要体现在以下几个维度:
1. 类型系统:动态类型 vs 静态类型
这是两者最根本、最本质的区别。
- JavaScript采用动态类型,变量的类型在运行时确定,且可以随时改变。例如,一个变量起初是数值,后续可以赋值为字符串,不会在编译或书写时产生任何警告。
- TypeScript采用静态类型,通过类型注解(
let age: number = 25)在编译阶段进行类型检查。一旦类型被声明,就不能随意变更,否则编译器会直接报错。
代码对比:
// JavaScript:动态类型,运行时才能发现类型问题 function add(a, b) { return a + b; } add(2, '3'); // 返回 '23',逻辑错误但无提示// TypeScript:静态类型,编译时即拦截错误 function add(a: number, b: number): number { return a + b; } add(2, '3'); // ❌ 编译时错误:类型不匹配这一差异直接影响了错误检测时机:JS 只能在运行时通过崩溃或错误输出来发现问题,而 TS 在编码阶段(IDE 实时提示)和编译阶段
