30分钟学会TypeScript:零基础也能上手的实战指南

萌萌熊
2026-01-04 12:48
阅读 905

大家好,我是一个维护过多个开源项目的前端开发者,也写过不少技术文档。今天我想聊聊 TypeScript —— 这个让无数初学者“望而却步”却又不得不学的语言。其实,它没你想象的那么难。

我当初学 TypeScript 的时候,也是一头雾水:明明 JavaScript 能跑得好好的,为啥还要加一堆类型?后来我才明白,类型不是限制,而是保护。就像你在写一本关于区块链的书时,总得先列个目录;或者开发一个爬虫程序前,得清楚目标网站的结构一样,TypeScript 帮你提前把“规矩”定好,避免后期踩坑。

更神奇的是,哪怕你现在在用 Spring Boot 写后端,TypeScript 也能和它完美配合——前后端联调时,接口字段一目了然,再也不用反复问“这个字段到底叫 name 还是 userName?”。

所以,别被名字吓到。接下来这30分钟,我会带你从零搭建环境、理解核心概念,最后亲手写一个能运行的小项目。准备好了吗?我们开始!


第一步:为什么需要 TypeScript?

JavaScript 是一门“灵活”的语言——灵活到你把字符串当成数字用,它也不会立刻报错,而是默默返回 NaN。这种“宽容”在小项目里还好,但一旦项目变大(比如一个抓取多个网站数据的爬虫系统),bug 就会像野草一样疯长。

TypeScript 就是在 JavaScript 的基础上,加上了静态类型检查。你可以把它理解成“带语法检查的 JavaScript”。

举个生活化的例子:

  • JavaScript:你写信给朋友,写完就寄出去,等对方收到才发现地址写错了。
  • TypeScript:你写信时,邮局工作人员先帮你检查地址格式对不对,有问题当场提醒你改。

而且,TypeScript 最终会被“编译”成纯 JavaScript,浏览器照样能运行——完全兼容现有生态。


第二步:搭建开发环境(5分钟搞定)

要写 TypeScript,你只需要三样东西:

工具 作用 安装方式
Node.js 运行 JavaScript/TypeScript 的环境 官网下载(选 LTS 版)
npm 或 yarn 包管理工具(Node 自带 npm) 安装 Node 后自动可用
代码编辑器 推荐 VS Code(对 TS 支持最好) 官网下载

具体步骤:

  1. 安装 Node.js
    打开终端(Mac/Linux 用 Terminal,Windows 用 PowerShell 或 CMD),输入:

    node -v
    npm -v
    

    如果显示版本号(如 v18.17.0),说明已安装。如果没有,请去官网下载安装。

  2. 初始化项目

    mkdir ts-demo          # 创建项目文件夹
    cd ts-demo             # 进入文件夹
    npm init -y            # 生成 package.json
    
  3. 安装 TypeScript

    npm install -D typescript
    
  4. 生成配置文件

    npx tsc --init
    

    这会生成一个 tsconfig.json 文件,它是 TypeScript 的“说明书”,告诉编译器怎么工作。

💡 小贴士:如果你看到 tsconfig.json 里有一堆注释,别慌!默认配置已经够用了。我们主要关注 outDir(输出目录)和 rootDir(源码目录)。

  1. 创建源码目录

    mkdir src
    echo 'console.log("Hello, TS!")' > src/index.ts
    
  2. 编译并运行

    npx tsc                # 编译 TS 到 JS
    node dist/index.js     # 运行生成的 JS(假设 outDir 设为 "dist")
    

如果看到 Hello, TS!,恭喜你!环境搭好了。


第三步:核心概念速通(用最简单的例子)

1. 类型标注(Type Annotation)

在变量后面加上冒号和类型,就像给变量“贴标签”:

let name: string = "Alice";
let age: number = 25;
let isStudent: boolean = true;

常见的基本类型:

  • string:文本
  • number:数字(整数或小数)
  • boolean:真假值
  • null / undefined:空值

新手注意:TypeScript 通常能自动推断类型。比如 let x = 10;,TS 会自动知道 xnumber,不用写 : number

2. 数组和对象

数组有两种写法:

let fruits: string[] = ["apple", "banana"];
// 或者
let scores: Array<number> = [90, 85, 95];

对象要用“接口”(Interface)来描述结构:

interface Book {
  title: string;
  pages: number;
  published: boolean;
}

const myBook: Book = {
  title: "区块链入门指南",
  pages: 200,
  published: true
};

3. 函数也有类型!

函数可以标注参数和返回值类型:

function add(a: number, b: number): number {
  return a + b;
}

// 如果函数不返回值,用 void
function logMessage(msg: string): void {
  console.log(msg);
}

4. 可选属性与联合类型

有时候字段可能不存在?用 ? 表示可选:

interface SpiderConfig {
  url: string;
  delay?: number;      // 可选,单位毫秒
  headers?: Record<string, string>;
}

或者一个变量可能是多种类型?用 |(联合类型):

let statusCode: number | string = 200;
statusCode = "404 Not Found"; // 也可以

第四步:动手实战——写一个简易书籍信息爬虫模拟器

虽然真正的爬虫要用 Python 或 Puppeteer,但我们用 TypeScript 模拟一个“假爬虫”来练习类型系统。

需求:

  • 模拟从某个网站抓取书籍信息
  • 书籍包含:书名、作者、是否涉及区块链
  • 输出格式化结果

步骤:

  1. src/ 下新建 crawler.ts

  2. 定义数据结构

// 书籍接口
interface Book {
  title: string;
  author: string;
  tags: string[];           // 比如 ["区块链", "金融"]
}

// 爬虫结果
interface CrawlResult {
  books: Book[];
  timestamp: Date;
}
  1. 模拟抓取函数
function fetchBooks(): Book[] {
  return [
    {
      title: "精通区块链开发",
      author: "张三",
      tags: ["区块链", "智能合约"]
    },
    {
      title: "TypeScript 实战",
      author: "李四",
      tags: ["前端", "TypeScript"]
    }
  ];
}
  1. 主逻辑
function runCrawler(): CrawlResult {
  const books = fetchBooks();
  const timestamp = new Date();

  // 过滤出含“区块链”的书
  const blockchainBooks = books.filter(book =>
    book.tags.includes("区块链")
  );

  console.log("发现以下区块链相关书籍:");
  blockchainBooks.forEach(book => {
    console.log(`- 《${book.title}》 by ${book.author}`);
  });

  return { books, timestamp };
}

// 执行
runCrawler();
  1. 编译并运行
npx tsc
node dist/crawler.js

你应该会看到:

发现以下区块链相关书籍:
- 《精通区块链开发》 by 张三

🎯 关键点:通过 interface,我们明确了每本书必须有哪些字段。如果有人不小心写了 titel(拼错),TypeScript 会在编译时报错,而不是等到用户访问页面才发现问题!


第五步:新手常见问题解答

Q1:TypeScript 和 JavaScript 到底什么关系?

A:TypeScript 是 JavaScript 的超集。所有合法的 JS 代码都是合法的 TS 代码。TS = JS + 类型 + 一些新语法(如 interface、enum)。

Q2:我必须每个变量都写类型吗?

A:不必!TS 有强大的类型推断。只有在 TS 无法确定类型时(比如函数参数、API 返回值),才需要手动标注。

Q3:编译后的 JS 文件要不要提交到 Git?

A:不要! 只提交 .ts 源文件和 tsconfig.json。JS 文件是“产物”,可以在 .gitignore 中忽略 dist/build/ 目录。

Q4:TypeScript 能用在 React/Vue/Spring Boot 项目中吗?

A:当然!React 和 Vue 都有官方 TS 支持。至于 Spring Boot——虽然它是 Java 框架,但你的前端用 TS 写,通过 REST API 通信,双方用 JSON 格式交换数据,非常清晰。比如 Spring Boot 返回 { "title": "书名" },TS 端用 interface Response { title: string } 对接,绝不会出错。

Q5:报错 “Cannot find module” 怎么办?

A:通常是缺少类型声明文件。比如用 lodash,需要额外安装:

npm install -D @types/lodash

社区为大多数流行库都提供了类型定义(@types/xxx)。


第六步:下一步学习建议

你已经迈出了第一步!接下来可以:

  1. 深入学习高级类型
    如泛型(Generic)、类型守卫(Type Guard)、映射类型(Mapped Types)。

  2. 结合框架实践
    尝试用 TypeScript 写一个 React 或 Vue 组件,你会发现 props 的类型约束让开发更安心。

  3. 阅读优质开源项目
    比如 VS Code、Deno 都是用 TS 写的,看看大厂怎么组织代码。

  4. 用 TS 重构旧项目
    把你以前写的 JavaScript 小工具改成 TypeScript,体验“有类型”的快乐。


最后的话

我写这篇教程,是因为见过太多初学者被“类型”吓退。其实,TypeScript 不是为了增加复杂度,而是为了减少不确定性。无论你是想开发一个分析区块链数据的工具,还是写一个自动化爬虫,或是和 Spring Boot 后端协作,类型系统都能成为你的“第二双眼睛”。

记住:写代码不是为了机器能运行,而是为了让人类(包括未来的你)能看懂。

现在,打开你的编辑器,新建一个 .ts 文件,敲下第一行代码吧。30分钟后,你会感谢今天的自己。

Happy Coding!

评论 0

最热最新
暂无评论
萌萌熊Lv.1
0
影响力
0
文章
0
粉丝