TypeScript快速入门:30分钟上手指南

梁雨泽
2026-05-12 04:00
阅读 4710

大家好,我是小张,一名211高校的计算机专业研究生。平时除了搞科研,我还特别喜欢写技术博客,尤其是帮刚入门的新同学少走弯路。今天这篇教程,就是我专门为零基础朋友写的 TypeScript 快速入门指南

为什么写这篇?因为我在带师弟师妹做项目时,发现很多人一看到 .ts 文件就发怵,觉得 TypeScript “又难又麻烦”。其实不然!我当初学的时候也踩过不少坑,但一旦跨过那道门槛,你会发现它简直是前端开发的“安全网”——帮你提前发现 bug,写出更健壮的代码。

更巧的是,最近我用 GPT-4 辅助开发一个叫 Windsurf 的小型天气应用(名字灵感来自风浪冲浪,寓意数据如风浪般流动),整个过程让我对 TS 的价值有了更深体会。所以今天,我就带着这个实战思路,带你 30 分钟上手 TypeScript!


什么是 TypeScript?

简单说:TypeScript 是 JavaScript 的超集
这意味着:所有合法的 JavaScript 代码,都是合法的 TypeScript 代码。但它额外增加了类型系统(Type System)。

举个生活化的例子:

  • 写 JS 就像开车不系安全带——自由,但万一出事后果严重。
  • 写 TS 就像系了安全带——多了一点“约束”,但能提前预警危险。

比如下面这段 JS 代码:

function add(a, b) {
  return a + b;
}
add("hello", 5); // 结果是 "hello5" —— 是你想要的吗?

在 JS 中不会报错,但逻辑可能出错。而 TS 能在你写代码时就提醒你:“嘿,你传了个字符串,但这里应该传数字!”


环境准备:5 分钟搭好开发环境

别担心,安装 TS 比装微信还简单。

第一步:确保你有 Node.js

打开终端(Mac 用 Terminal,Windows 用 PowerShell 或 CMD),输入:

node -v
npm -v

如果显示版本号(比如 v18.x),说明已安装。如果没有,请先去 nodejs.org 下载 LTS 版。

💡 我当初第一次装 Node 时,手抖点了“Current”版(最新不稳定版),结果 npm 报各种错。记住:选 LTS(长期支持版)最稳!

第二步:全局安装 TypeScript

npm install -g typescript

装完后验证:

tsc --version
# 应该输出类似:Version 5.3.3

第三步:初始化项目

创建一个文件夹,比如 my-ts-project,然后进入:

mkdir my-ts-project
cd my-ts-project
npm init -y          # 生成 package.json
tsc --init           # 生成 tsconfig.json(TS 配置文件)

现在你的项目结构应该是这样:

my-ts-project/
├── package.json
└── tsconfig.json   ← 这是 TS 的“说明书”

✅ 小技巧:你可以用 VS Code 打开这个文件夹。它对 TS 支持极好,会自动提示类型错误,就像有个实时教练在旁边!


核心概念:用大白话讲清楚

TypeScript 的核心就三个字:加类型。下面我们一个个拆解。

1. 基础类型(Basic Types)

TS 最常用的几种类型:

类型 说明 示例
number 数字 let age: number = 25;
string 字符串 let name: string = "张三";
boolean 布尔值 let isActive: boolean = true;
any 任意类型(慎用!) let mystery: any = "anything";

⚠️ 避坑指南:不要滥用 any!我见过太多新人为了“省事”全用 any,结果失去了 TS 的最大价值——类型检查。相当于买了防盗门却不锁。

2. 函数类型(Function Types)

函数也可以声明参数和返回值的类型:

function greet(name: string): string {
  return "Hello, " + name;
}

greet("小明"); // OK
greet(123);    // ❌ 报错:Argument of type 'number' is not assignable to parameter of type 'string'.

3. 接口(Interface)——定义对象的“形状”

这是 TS 的王牌功能!比如我们要描述一个“用户”对象:

interface User {
  id: number;
  name: string;
  email?: string; // ? 表示可选属性
}

const user1: User = {
  id: 1,
  name: "李四"
}; // ✅ 合法,email 可缺省

const user2: User = {
  id: "2", // ❌ 错误!id 必须是 number
  name: "王五"
};

💡 我在开发 Windsurf 天气应用时,就用 interface WeatherData 来规范 API 返回的数据结构,再也不怕后端字段改了我不知道!

4. 类型推断(Type Inference)

TS 很聪明,很多时候你不用显式写类型,它能自动猜出来:

let msg = "你好"; // TS 自动推断 msg 是 string 类型
msg = 123;        // ❌ 报错!不能把 number 赋给 string

所以,不是每行都要写类型,只在必要时显式声明即可


实战项目:用 TS 写一个简易天气查询器(Windsurf Lite)

现在,我们动手做一个超简版 Windsurf —— 输入城市名,返回模拟天气。

步骤 1:创建文件

在项目根目录新建 weather.ts

步骤 2:定义数据结构

// weather.ts
interface WeatherReport {
  city: string;
  temperature: number;
  condition: 'sunny' | 'rainy' | 'cloudy'; // 联合类型:只能是这三种之一
}

步骤 3:编写查询函数

function getWeather(city: string): WeatherReport {
  // 模拟 API 调用(实际项目中这里会 fetch 真实数据)
  const conditions: ('sunny' | 'rainy' | 'cloudy')[] = ['sunny', 'rainy', 'cloudy'];
  const randomCondition = conditions[Math.floor(Math.random() * 3)];
  
  return {
    city,
    temperature: Math.floor(Math.random() * 30) + 10, // 10~40度
    condition: randomCondition
  };
}

步骤 4:调用并输出

const report = getWeather("杭州");
console.log(`${report.city} 今天 ${report.condition},气温 ${report.temperature}℃`);

步骤 5:编译并运行

在终端执行:

tsc weather.ts    # 编译成 weather.js
node weather.js   # 运行

输出可能是:

杭州 今天 cloudy,气温 23℃

✨ 成功!你刚刚用 TS 写了一个带类型保护的小程序。试着把 getWeather(123),看看编辑器是不是立刻标红警告?


新手常见问题 & 解决方案

我整理了带学生时最常被问的几个问题:

Q1:TS 文件怎么在浏览器里运行?

A:TS 不能直接在浏览器跑!必须先用 tsc 编译成 JS。不过如果你用 ViteCreate React App 等现代框架,它们内置了 TS 支持,保存即自动编译,你几乎感觉不到。

Q2:interfacetype 有什么区别?

简单记:

  • interface 定义对象结构(比如 API 返回的数据)
  • type 定义联合类型、元组等复杂类型
type Status = 'loading' | 'success' | 'error'; // 用 type
interface ApiResponse { data: any; status: Status; } // 用 interface

📌 经验:90% 场景用 interface 就够了。

Q3:为什么我的 TS 代码没报错?

检查三点:

  1. 文件后缀是不是 .ts(不是 .js
  2. 是否在 tsconfig.json 所在目录下
  3. VS Code 是否识别为 TS 文件(右下角看语言模式)

Q4:GPT-4 能帮我写 TS 吗?

当然可以!我在开发 Windsurf 时就让 GPT-4 帮我生成了初始的 interface 和类型守卫(Type Guard)。但注意:不要盲目复制,要理解它生成的代码是否符合你的类型设计。

比如你可以问:

“用 TypeScript 写一个函数,接收用户对象,返回是否成年。用户对象包含 age: number。”

GPT-4 会给你:

interface User {
  age: number;
}

function isAdult(user: User): boolean {
  return user.age >= 18;
}

完美!但如果你没定义 User,它可能用 any,那就得手动修正。


下一步学习建议

恭喜你,已经跨过了 TS 的门槛!接下来:

  1. 深入学习泛型(Generics)
    比如 Array<T>Promise<T>,这是 TS 的高阶用法。

  2. 结合框架使用
    Vue 3 和 React 都官方支持 TS。试试用 create-vuevite 创建一个 TS 项目。

  3. 阅读优秀开源项目
    比如 Pinia(Vue 状态管理库)、Zod(TS 校验库),看高手怎么用类型。

  4. 开启严格模式
    tsconfig.json 中设置 "strict": true,让 TS 更“较真”,帮你发现更多潜在问题。

🌟 最后一句真心话:类型不是束缚,而是护城河。当你习惯了 TS,再回头看纯 JS,会有一种“裸奔”的不安感。坚持一周,你会回来感谢自己今天的决定。


附录:常用命令速查表

命令 作用
npm install -g typescript 全局安装 TS
tsc --init 生成配置文件
tsc file.ts 编译单个 TS 文件
tsc --watch 监听文件变化自动编译
npx tsc --noEmit 只检查类型,不生成 JS

希望这篇教程能成为你 TS 之旅的第一块垫脚石。如果你觉得有用,欢迎关注我的博客,后续我会更新《TypeScript + React 实战:从 Windsurf 到完整应用》系列!

有任何问题,评论区见!我们一起把坑填平,把路走宽。

评论 0

最热最新
暂无评论
梁雨泽Lv.1
0
影响力
0
文章
0
粉丝