TypeScript 与 JavaScript 的区别
理解 TypeScript 的特性以及它与 JavaScript 的关系
问题
TypeScript 是什么?它与 JavaScript 有什么区别?
解答
TypeScript 是什么
TypeScript 是 JavaScript 的超集,在 JavaScript 基础上增加了静态类型系统。它支持 ES6+ 语法,并提供了面向对象编程的特性,如类、接口、继承、泛型等。
所谓”超集”,是指 TypeScript 包含了 JavaScript 的所有功能,并在此基础上进行了扩展。任何有效的 JavaScript 代码都是有效的 TypeScript 代码。
编译过程
TypeScript 代码需要编译成 JavaScript 才能运行。编译前:
const hello: string = "Hello World!"
console.log(hello)
编译后:
const hello = "Hello World!"
console.log(hello)
主要特性
类型批注
可以显式声明变量类型,在编译时进行类型检查:
function Add(left: number, right: number): number {
return left + right;
}
基本类型包括 number、boolean、string,动态类型使用 any。
类型推断
未显式声明类型时,TypeScript 会自动推断:
let str = 'string' // 自动推断为 string 类型
类型推断发生在变量初始化、设置默认参数值和决定函数返回值时。如果无法推断,则默认为 any 类型。
接口
用于定义对象的结构:
interface User {
name: string;
age: number;
}
枚举
用于定义一组命名常量:
enum Color {
Red,
Green,
Blue
}
泛型
编写可复用的代码,类型在使用时指定:
function identity<T>(arg: T): T {
return arg;
}
元组
固定长度和类型的数组:
let tuple: [string, number] = ['hello', 10]
关键点
- TypeScript 是 JavaScript 的超集,添加了静态类型系统
- 在编译阶段进行类型检查,可以提前发现错误
- 支持类型批注和类型推断两种方式
- 需要编译成 JavaScript 才能运行,编译时会擦除类型信息
- 提供接口、枚举、泛型等高级特性,适合大型项目开发
目录