// JavaScript(运行时可能出错)
let value = 42;
value = "hello"; // 合法,但后续操作可能崩溃
// TypeScript(编译时报错)
let value: number = 42;
value = "hello"; // 错误:Type 'string' is not assignable to type 'number'
二、编译与执行机制
特性
JavaScript
TypeScript
编译需求
无需编译,直接由浏览器/Node.js 执行
必须通过 tsc 编译为 JavaScript
编译输出
无中间步骤
生成 .js 文件及类型声明文件(.d.ts)
核心影响:
TypeScript 的编译步骤提供代码优化 和类型擦除,最终产物仍是标准 JS。
支持将 ES6+ 语法(如类、模块)编译为兼容旧浏览器的 ES5 代码。
三、面向对象与高级特性
特性
JavaScript
TypeScript
类与继承
ES6 支持基础类语法,无类型注解
支持完整的类、泛型、抽象类及接口
接口与枚举
不支持
核心特性(用于定义数据结构契约)
代码示例:
复制代码
// TypeScript 接口与类
interface User {
name: string;
age: number;
}
class Admin implements User {
constructor(public name: string, public age: number) {}
}