TypeScript 凭什么成为 2025 年顶流语言

Octoverse: A new developer joins GitHub every second as AI leads TypeScript to #1

GitHub Octoverse 报告指出 TypeScript 成为 GitHub 最受欢迎语言。2025年8月,TypeScript超越了Python和JavaScript。它的兴起表明开发者正向类型化语言转变,使智能体辅助编码在生产环境中更加可靠。而且几乎所有主要前端框架现在默认都采用TypeScript作为支架

即便如此,Python在AI和数据科学工作负载中依然占据主导地位,而JavaScript/TypeScript生态系统的整体活动量仍高于单靠Python。

在这里插入图片描述

TypeScript 为何在2025年获奖?

TypeScript 在 2025 年成为 GitHub 月度贡献者榜首(超 263 万贡献者,同比增长 66.6%) ——它完美适配 AI 时代的开发需求,同时大幅降低使用门槛,还成为主流框架的默认选择

  1. TypeScript 爆发的最核心原因——AI 生成代码(LLM,如 ChatGPT/Claude)成为主流,但 AI 容易出错,而 TypeScript 的类型系统( [Type] )可减少代码的模糊性,并在代码进入生产环境前提早捕获大型语言模型(LLM)的错误。

通过定义变量、函数、接口的类型,明确代码的输入 / 输出规则,减少歧义。

假设你让 AI 生成一个 “用户信息处理函数”:

  • 无类型(纯 JS):AI 可能生成 function getUserInfo(id) { return { name: ‘张三’ }; },但实际你需要 id 是数字、返回值包含 age 字段,AI 生成的代码会和团队预期不符,多人协作时需反复沟通;
  • 有类型(TS):你先定义类型:
interface User {
  id: number;
  name: string;
  age: number;
}
function getUserInfo(id: number): User { /* ... */ }

AI 会严格按照这个契约生成代码,即使是 10 人团队 + AI 协作,所有人对 “用户信息” 的定义完全一致,无需反复核对,团队规模可轻松扩大。

AI 生成的代码中,大部分编译失败都是 “类型不匹配”(比如 AI 把字符串传给需要数字的参数、返回值缺少字段等),比如AI 生成了一段支付逻辑代码:

// AI 生成的纯 JS 代码(隐藏错误)
function pay(amount) {
  return amount * 0.08; // 计算手续费
}
pay("100"); // 传入字符串,运行时才报错(生产环境崩溃)

而 TypeScript 会在编写阶段(编译时)就提示错误:

function pay(amount: number): number {
  return amount * 0.08;
}
pay("100"); // TS 直接标红:类型“string”不能赋值给类型“number”

这意味着 AI 生成的错误在 “代码提交前” 就被拦截,避免了生产环境的故障 —— 这对依赖 AI 提效的 2025 年开发模式至关重要。

  1. 几乎所有前端 / 全栈框架都将 TypeScript 设为默认选项,彻底消除了 “要不要学 TS” 的选择成本:框架包括Next.js 15、Astro 3、SvelteKit 2、Qwik、SolidStart、Angular 18、Remix;
  • 2024 年创建 Next.js 项目:npx create-next-app my-app → 默认生成纯 JS 项目,需手动安装 typescript 并配置;
  • 2025 年创建 Next.js 15 项目:npx create-next-app my-app → 直接生成 TS 项目(包含 tsconfig.json、类型定义文件),开发者无需任何额外配置就能用 TS;
  1. 使用门槛大幅降低

TypeScript 早年被诟病 “配置复杂、样板代码多”,但 2025 年的工具链彻底解决了这个问题:

  • 之前学 TS:需手动配置 tsconfig.json、安装 @types/node、配置编译脚本,新手可能卡半天;

  • 现在用 Vite 创建项目:npm create vite@latest my-ts-app – --template react-ts → 一键生成配置好的 TS 项目,无需手动改任何文件

  • 运行 TS 代码:用 Bun 直接执行 bun run index.ts(无需编译成 JS),或用 ts-node 执行 ts-node index.ts,隐藏所有编译细节;

  • IDE 自动配置:VS Code 打开 TS 文件时,自动生成基础的 tsconfig.json,甚至提示 “是否自动安装缺失的类型定义”。

TypeScript 适配 AI 开发的底层核心优势

AI(大模型 / LLM)本质是 “文本生成器”,但要和代码、工具、系统精准交互,不能只输出自然语言,必须输出 “结构化数据”—— 而 JSON 是目前行业公认的 “AI 通用交互协议”:

  • Tool Calling(函数调用):比如让 AI 调用 “天气查询 API”,AI 不能只说 “查北京天气”,必须输出结构化的JSON指令:
{
  "name": "get_weather",  // 要调用的函数名
  "args": { "city": "北京" }  // 函数参数
}
  • Structured Output(结构化输出):比如让 AI 提取文章中的 “人物信息”,AI 会输出 JSON 而非纯文本:
{
  "name": "张三",
  "age": 30,
  "occupation": "工程师"
}

AI 对外输出的 “可被机器处理的有效信息”,几乎都是 JSON 格式 ——JSON 就是 AI 和开发者之间的 “通用语言”。

TypeScript 是 JavaScript 的超集,而 JavaScript 天生和 JSON 同源(JSON 就是从 JS 对象语法衍生来的),TS 在此基础上增加了类型系统,让 JSON 处理 “既灵活又安全”:

// AI 输出的 JSON 字符串(LLM Output)
const llmOutput = `{"name":"get_weather","args":{"city":"北京"}}`;

// TS 原生解析 JSON,直接得到可操作的对象
const call = JSON.parse(llmOutput);

// 直接操作属性,和操作普通 JS 对象完全一致
console.log(call.name); // 输出:get_weather
console.log(call.args.city); // 输出:北京

对比其他语言(比如 Python):虽然也能解析 JSON,但需要导入 json 库,且操作逻辑不如 TS 贴合 JSON 结构.

AI 生成的 JSON 可能存在 “字段缺失、类型错误”(比如把 age 写成字符串、少传 city 参数),TS 的 Interface 能提前定义 JSON 结构,让 IDE / 编译器帮你校验,同时保留运行时灵活性:

// 第一步:用 Interface 定义 AI 输出的 JSON 结构(相当于“契约”)
interface ToolCall {
  name: string;  // 函数名必须是字符串
  args: {        // 参数必须是对象,包含city字段(字符串)
    city: string;
  };
}

// 第二步:解析 AI 输出,并指定类型(as ToolCall)
const llmOutput = `{"name":"get_weather","args":{"city":"北京"}}`;
const call = JSON.parse(llmOutput) as ToolCall;

// ✅ 有类型提示:输入 call. 时,IDE 会自动提示 name/args 字段
// ✅ 有类型校验:如果 AI 输出的 args 缺少 city,或 city 是数字,TS 会标红报错
call.args.city = 123; // TS 报错:类型“number”不能赋值给类型“string”

AI 生成的 JSON 可能有各种 “小错误”(比如字段名打错、类型不对),TS 的类型校验能在编写代码阶段发现这些错误,而不是等到运行时(生产环境)才崩溃

TS 的类型系统是 “编译时校验”,运行时依然是普通 JS 对象,不会像 Java/C# 那样需要先把 JSON 转成固定的类实例,兼顾 “类型安全” 和 “动态灵活”:

interface ToolCall {
  name: string;
  args: any; //any 兼容 AI 输出的任意参数结构
}

// AI 输出的参数可能是天气查询,也可能是翻译、计算,结构各不相同
const weatherCall = JSON.parse(`{"name":"get_weather","args":{"city":"北京"}}`) as ToolCall;
const translateCall = JSON.parse(`{"name":"translate","args":{"text":"Hello"}}`) as ToolCall;

// 无需修改 Interface,就能处理不同结构的 JSON,灵活适配 AI 的多变输出
console.log(weatherCall.args.city); // 北京
console.log(translateCall.args.text); // Hello

补充:

  1. TS 是 JS 的超集,核心价值是静态类型检查,将 JS 运行时错误前置到编码阶段,适配大型项目;
  2. TS 需编译为 JS 执行,自动化编译依赖 tsconfig.json + tsc --watch,框架脚手架已内置该能力;
  • 命令行编译(基础了解,几乎不用)

全局安装 TS:npm i -g typescript(安装后获得 tsc 命令);
编译单个 TS 文件:tsc index.ts(生成同名 index.js 文件);
缺点:每次修改代码需重新执行编译命令,效率低。

  • 自动化编译(实际开发常用)

生成 TS 配置文件:tsc --init(生成 tsconfig.json);
启动实时编译:tsc --watch(监听 TS 文件变化,自动编译为 JS);
关键配置优化:noEmitOnError: true:TS 代码有错误时,不生成 JS 文件(避免错误代码上线);

框架集成:Vue/React 官方脚手架(Vite/Webpack)已内置 TS 编译,开箱即用,无需手动配置

  1. 类型是 TS 核心:基础类型显式声明,避免滥用 any,优先用 unknown 保证类型安全,never/void 关注语义而非语法层面的返回值。
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐