📜 TypeScript 由微软开发,于 2012 年首次发布。它为 JavaScript 添加了静态类型系统,帮助开发者在编译时发现错误,提高代码质量和可维护性。本页面记录了 TypeScript 每个主要版本引入的新特性、改进以及解决的问题。

TypeScript 1.0 2014 年 4 月
重大发布

核心特性

  • 类型注解(Type Annotations)
  • 接口(Interfaces)
  • 类(Classes)
  • 模块(Modules)
  • 泛型(Generics)
  • 联合类型(Union Types)
解决的问题

❌ JavaScript 是动态类型语言,大型项目中容易出现类型错误

✅ TypeScript 提供静态类型检查,在编译时发现类型错误

TypeScript 1.1 2014 年 10 月
小版本

主要改进

  • 编译器性能提升(速度提升 4 倍)
  • 改进的类型推断
  • 支持外部模块
TypeScript 1.3 2015 年 7 月
小版本

新增特性

  • 访问修饰符(public/private/protected)
  • 计算属性名
  • 类型守卫(Type Guards)
TypeScript 1.5 2015 年 9 月
重要更新

ES6 支持

  • let / const
  • 解构赋值
  • 展开运算符(...)
  • for...of 循环
  • 模块语法(import/export)
  • 目标代码生成(ES3/ES5/ES6)
TypeScript 1.8 2016 年 2 月
小版本

新增特性

  • 字符串字面量类型
  • 控制流分析(Control Flow Analysis)
  • 改进的类型推断
  • 支持 JSX/React
解决的问题

❌ 无法精确描述某些值的类型(如特定字符串)

✅ 字符串字面量类型允许精确指定字符串值

TypeScript 2.0 2016 年 9 月
重大发布

核心特性

  • 严格空值检查(--strictNullChecks)
  • 只读属性
  • 区分参数属性
  • 控制流类型分析增强
  • never 类型
解决的问题

❌ null 和 undefined 导致的运行时错误("Cannot read property of undefined")

✅ 严格空值检查强制显式处理 null/undefined

TypeScript 2.1 2016 年 11 月
小版本

新增特性

  • 对象展开运算符
  • keyof 运算符
  • 映射类型(Mapped Types)
  • 改进的字面量类型推断
type Readonly<T> = { readonly [P in keyof T]: T[P]; };
TypeScript 2.2 2017 年 2 月
小版本

新增特性

  • 混合类型(Intersection Types)
  • 对象字面量改进
  • JSX 属性改进
TypeScript 2.3 2017 年 4 月
小版本

新增特性

  • 泛型参数默认值
  • 索引类型改进
  • 严格模式选项(--strict)
interface Response<T = any> { data: T; status: number; }
TypeScript 2.4 2017 年 6 月
小版本

新增特性

  • 字符串枚举(String Enums)
  • 动态导入表达式
  • 泛型类型推断增强
TypeScript 2.5 2017 年 8 月
小版本

新增特性

  • 独占类型检查(Exhaustive Checks)
  • JSDoc 类型推断
  • import 重命名
TypeScript 2.6 2017 年 10 月
小版本

新增特性

  • 严格函数类型检查(--strictFunctionTypes)
  • 局部类型推断
  • 枚举改进
TypeScript 2.7 2018 年 1 月
小版本

新增特性

  • 唯一符号属性(unique symbol)
  • 元组类型改进
  • 智能选择检测
  • 类字段语法支持
TypeScript 2.8 2018 年 3 月
小版本

新增特性

  • 条件类型(Conditional Types)
  • 预处理器指令
  • 改进的 JSX 支持
type Extract<T, U> = T extends U ? T : never;
解决的问题

❌ 无法根据类型条件动态计算类型

✅ 条件类型允许根据类型关系进行类型分支

TypeScript 2.9 2018 年 5 月
小版本

新增特性

  • 泛型类型参数
  • 数字和符号属性名
  • import 类型
TypeScript 3.0 2018 年 7 月
重大发布

核心特性

  • 剩余参数(Rest Parameters)
  • 元组类型改进
  • 项目引用(Project References)
  • 错误处理改进
// 剩余参数 type Props<T> = T & { children?: React.ReactNode }; // 元组标签 type Tuple = [number, string, ...boolean[]];
TypeScript 3.1 2018 年 8 月
小版本

新增特性

  • 映射类型改进
  • 函数属性推断
  • React 支持改进
TypeScript 3.2 2018 年 11 月
小版本

新增特性

  • 严格元组检查
  • bigint 支持
  • 对象字面量改进
TypeScript 3.3 2019 年 1 月
小版本

主要改进

  • 构建性能提升
  • 联合类型索引改进
TypeScript 3.4 2019 年 3 月
小版本

新增特性

  • const 断言(const assertions)
  • 泛型类型推断改进
  • ESM 模块支持
const arr = [1, 2, 3] as const; // 类型:readonly [1, 2, 3]
解决的问题

❌ 数组和对象字面量类型推断过于宽泛

✅ const 断言保留字面量的精确类型

TypeScript 3.5 2019 年 5 月
小版本

新增特性

  • Omit 工具类型
  • 联合类型检查改进
  • 构建性能提升
TypeScript 3.6 2019 年 8 月
小版本

新增特性

  • 迭代器改进
  • 生成器支持改进
  • API 性能提升
TypeScript 3.7 2019 年 11 月
小版本

新增特性

  • 可选链(Optional Chaining)
  • 空值合并运算符(Nullish Coalescing)
  • 断言函数(Assertion Functions)
  • 递归类型引用
// 可选链 const name = user?.profile?.name; // 空值合并 const value = input ?? 'default';
解决的问题

❌ 深层嵌套属性访问需要多层 null 检查

✅ 可选链简化空值检查,空值合并提供默认值

TypeScript 3.8 2020 年 2 月
小版本

新增特性

  • 类型导入/导出(import type)
  • ECMAScript 私有字段
  • JSDoc 类型推断改进
import type { SomeType } from './module'; class Person { #name: string; }
TypeScript 3.9 2020 年 5 月
小版本

主要改进

  • 性能优化
  • Promise.allSettled 支持
  • 注释保留改进
TypeScript 4.0 2020 年 8 月
重大发布

核心特性

  • 可变参数元组(Variadic Tuple Types)
  • 类属性推断
  • 构造参数属性
  • 模板字面量类型
// 可变参数元组 type Tuple<T, U extends any[]> = [T, ...U]; // 模板字面量类型 type EventName = 'click' | 'hover' | 'tap'; type Handler = `on${Capitalize<EventName>}`;
TypeScript 4.1 2020 年 11 月
小版本

新增特性

  • 模板字面量类型增强
  • 键映射类型
  • 递归条件类型
  • 检查索引访问
type Greeting = `Hello, ${string}`;
TypeScript 4.2 2021 年 2 月
小版本

新增特性

  • 元组和数组类型改进
  • in 操作符类型守卫
  • 捕获剩余元组元素
TypeScript 4.3 2021 年 5 月
小版本

新增特性

  • 独立的 get/set 类型
  • override 修饰符
  • 模板字面量类型改进
  • 静态索引签名
TypeScript 4.4 2021 年 8 月
小版本

新增特性

  • 控制流分析改进
  • 自动访问器类型推断
  • 符号模板类型
TypeScript 4.5 2021 年 11 月
小版本

新增特性

  • 等待类型(Awaited)
  • 私有字段存在检查
  • 模板字面量类型改进
  • lib.d.ts 拆分
type PromiseResult<T> = Awaited<Promise<T>>; // 类型:T
TypeScript 4.6 2022 年 3 月
小版本

新增特性

  • 区分重载检查
  • 模板字符串推断改进
  • 移除未使用变量
TypeScript 4.7 2022 年 5 月
小版本

新增特性

  • 模块检测(moduleDetection)
  • infer 类型约束
  • 对象展开改进
  • ESM 支持改进
type FirstString<T extends any[]> = T extends [infer S extends string, ...any[]] ? S : never;
TypeScript 4.8 2022 年 8 月
小版本

新增特性

  • 交叉类型简化
  • 模板字符串类型改进
  • 自动绑定 this
TypeScript 4.9 2022 年 11 月
小版本

新增特性

  • satisfies 运算符
  • 自动访问器
  • 类型窄化改进
const config = { port: 3000, host: 'localhost' } satisfies { port: number; host: string }; // 保留字面量类型,同时检查类型
解决的问题

❌ 类型断言会丢失字面量类型信息

✅ satisfies 检查类型同时保留精确类型

TypeScript 5.0 2023 年 3 月
重大发布

核心特性

  • 装饰器(Decorators)
  • const 类型参数
  • 导出类型重命名
  • 性能优化
// 装饰器 function logged(target: any, propertyKey: string) { // ... } class Service { @logged getData() {} } // const 类型参数 function createTuple<const T>(arr: T[]) { return arr as Readonly<T>; }
解决的问题

❌ 装饰器提案多次变更,TypeScript 实现不一致

✅ 实现 TC39 Stage 3 装饰器提案

TypeScript 5.1 2023 年 5 月
小版本

新增特性

  • 泛型类型参数改进
  • JSX 子组件类型推断
  • 性能优化
TypeScript 5.2 2023 年 8 月
小版本

新增特性

  • using 声明
  • 显式资源管理
  • 装饰器改进
using file = openFile('test.txt'); // 自动调用 file[Symbol.dispose]()
TypeScript 5.3 2023 年 11 月
小版本

新增特性

  • import 属性
  • 类型导入推断改进
  • 性能优化
TypeScript 5.4 2024 年 3 月
小版本

新增特性

  • NoInfer 工具类型
  • 闭包类型推断改进
  • 性能优化
function getValue<T>( value: T, callback: (arg: NoInfer<T>) => void ) { callback(value); }
解决的问题

❌ 泛型推断时某些位置不应该参与推断

✅ NoInfer 阻止特定位置的类型推断

TypeScript 5.5 2024 年 6 月
小版本

新增特性

  • const 变量窄化
  • Promise 与 async/await 改进
  • lib 分离改进
  • 性能优化
TypeScript 5.6 2024 年 9 月
小版本

新增特性

  • 更精确的闲置检查
  • 支持 @link 标签
  • 性能优化
TypeScript 5.7 2024 年 11 月
小版本

新增特性

  • import 属性改进
  • 类型推断性能优化
  • 错误消息改进

📊 版本演进总结

12+

年发展历程

50+

主要版本发布

8

重大版本更新

200+

新特性引入