TypeScript

JavaScript的超集,添加静态类型检查和现代语言特性。由Microsoft开发维护,已成为大型前端项目的首选语言。

2012发布年份
Microsoft开发团队

核心特性

TypeScript 的设计哲学和关键技术特性

静态类型检查

在编译时捕获类型错误,提供完整的类型推断系统。支持接口、泛型、联合类型等高级类型特性。

类型推断接口泛型

现代语言特性

支持ES6+所有特性,并扩展了装饰器、枚举、元组等高级功能。与JavaScript完全兼容。

ES6+装饰器枚举

强大的工具支持

提供智能代码补全、重构、导航等IDE功能。与VS Code深度集成,开发体验极佳。

智能提示重构VS Code

渐进式采用

可以逐步将JavaScript项目迁移到TypeScript。支持混合使用JS和TS文件,降低迁移成本。

渐进式兼容性迁移

生态系统

围绕 TypeScript 构建的完整工具链

框架支持

所有主流框架都提供TypeScript支持。React、Vue、Angular、Svelte等都有完整的类型定义和开发工具。

@types/react@vue/runtime-dom@angular/core

测试框架

Jest、Vitest、Mocha等测试框架都支持TypeScript。提供类型安全的测试编写和断言。

ts-jestvitest@types/mocha

构建工具

Webpack、Vite、Rollup等构建工具都内置TypeScript支持。无需额外配置即可使用。

ts-loader@rollup/plugin-typescriptesbuild

类型定义

DefinitelyTyped提供5000+流行库的类型定义。npm包大多自带类型定义或@types包。

@types/node@types/lodashDefinitelyTyped

运行时

Node.js、Deno、Bun等JavaScript运行时都原生支持TypeScript。无需编译即可运行。

tsxts-nodeDeno

后端开发

NestJS、Express、Fastify等后端框架都支持TypeScript。提供完整的后端开发类型安全。

@nestjs/common@types/expressfastify

快速入门

# 安装TypeScript
npm install -g typescript

# 创建TypeScript项目
mkdir my-ts-project
cd my-ts-project
npm init -y

# 创建tsconfig.json
tsc --init

# 编写TypeScript代码
echo 'function greet(name: string): string {
    return `Hello, ${name}!`;
}
console.log(greet("TypeScript"));' > index.ts

# 编译TypeScript
tsc

# 运行编译后的JavaScript
node index.js

配置示例

// tsconfig.json
{
  "compilerOptions": {
    "target": "ES2020",
    "module": "commonjs",
    "lib": ["ES2020", "DOM"],
    "outDir": "./dist",
    "rootDir": "./src",
    "strict": true,
    "esModuleInterop": true,
    "skipLibCheck": true,
    "forceConsistentCasingInFileNames": true,
    "resolveJsonModule": true,
    "declaration": true,
    "declarationMap": true,
    "sourceMap": true
  },
  "include": ["src/**/*"],
  "exclude": ["node_modules", "dist"]
}

学习资源

官方文档

全面的手册、教程和API参考文档。

typescriptlang.org/docs →

TypeScript GitHub

源代码仓库,可查看源码和参与贡献。

github.com/microsoft/TypeScript →

TypeScript Playground

在线TypeScript编辑器,实时编译和预览。

typescriptlang.org/play →

DefinitelyTyped

高质量TypeScript类型定义的仓库。

DefinitelyTyped →

与其他语言对比

vs JavaScript

TypeScript添加了静态类型检查,提供更好的开发工具支持。JavaScript更灵活,适合小型项目和快速原型。

类型安全开发体验学习曲线

vs Flow

TypeScript生态更成熟,工具支持更好。Flow由Facebook开发,类型系统更灵活,但社区较小。

生态系统类型系统社区

vs JSDoc

TypeScript提供完整的类型系统和编译时检查。JSDoc是注释中的类型标注,运行时无检查。

编译时检查类型系统工具支持