TypeScript 30分钟上手:零基础也能写爬虫、React和区块链项目?

吴艳
2026-01-14 18:20
阅读 645

大家好,我是阿哲,985计算机系毕业,现在是一名全栈工程师,也是掘金的常驻作者。最近很多刚入门的朋友私信问我:“TypeScript到底难不难?我连JavaScript都还没搞明白,能直接学吗?”

我的答案是:完全可以! 而且越早学越好。

我当初学的时候,也是从“变量怎么声明”开始的。那时候看到 let name: string = "Alice" 这种写法,还以为是在写Java。但后来发现,TypeScript(简称TS)其实就是在JavaScript的基础上加了一层“安全网”——它能提前告诉你哪里可能出错,而不是等到用户点击按钮时才崩溃。

更妙的是,无论你是想写前端React应用、后端爬虫脚本,还是研究区块链智能合约,TS都能派上用场。今天这篇教程,就带你用30分钟快速上手TypeScript,并通过一个微型项目串联起这些热门关键词。


第一步:环境准备(5分钟搞定)

要写TS代码,你只需要三样东西:

  1. Node.js(建议v18+)
  2. 代码编辑器(推荐 VS Code)
  3. 全局安装 TypeScript 编译器

安装步骤

# 1. 检查 Node 是否安装
node -v

# 2. 全局安装 TypeScript
npm install -g typescript

# 3. 验证安装成功
tsc -v  # 应输出类似 Version 5.x.x

💡 小贴士:如果你还没装Node,去 nodejs.org 下载LTS版本即可。

创建你的第一个TS项目

mkdir ts-demo && cd ts-demo
npm init -y
tsc --init  # 生成 tsconfig.json 配置文件

此时目录结构如下:

ts-demo/
├── package.json
└── tsconfig.json

我们新建一个 src/index.ts 文件,开始写代码!


第二步:核心概念速览(像聊天一样学TS)

TypeScript 的核心思想就一个:给变量、函数、对象加上“类型标签”。这样编辑器就能提前帮你检查错误。

1. 基础类型:不只是字符串和数字

JavaScript 写法 TypeScript 写法 说明
let age = 25 let age: number = 25 明确 age 是数字
let name = "Bob" let name: string = "Bob" 字符串类型
let isActive = true let isActive: boolean = true 布尔值

但TS聪明在哪?类型可以自动推断!比如:

let score = 100; // TS 自动知道 score 是 number
// score = "high"; ❌ 报错!不能把字符串赋给数字

2. 函数也有“说明书”

在JS里,函数参数是什么类型完全靠猜。TS则强制你写清楚:

function fetchData(url: string, timeout: number): Promise<string> {
  // 模拟网络请求
  return new Promise((resolve) => {
    setTimeout(() => resolve(`Data from ${url}`), timeout);
  });
}

// 调用
fetchData("https://api.example.com", 1000); // ✅
fetchData(123, "1s"); // ❌ 类型错误!

🚨 新手常见问题:为什么函数最后有 : Promise<string>
答:这叫“返回值类型注解”,表示这个函数最终会返回一个包含字符串的Promise(异步操作结果)。

3. 接口(Interface):定义对象的“合同”

假设你要处理一个用户数据,TS允许你先定义它的结构:

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

const user1: User = { id: 1, name: "Alice" }; // ✅ email 可省略
const user2: User = { id: "2", name: "Bob" }; // ❌ id 必须是 number

接口就是对象的“蓝图”,任何不符合蓝图的对象都会被拒绝。


第三步:实战项目——一个迷你“技术信息聚合器”

为了串联“爬虫、React、区块链”这三个关键词,我们做一个超简化的命令行工具:从模拟API获取技术文章标题,并分类显示

⚠️ 注意:这里不真写爬虫或区块链,而是用TS模拟数据结构,展示TS如何为这些领域提供类型安全。

项目目标

  • 模拟三种技术内容:爬虫技巧React教程区块链新闻
  • 用TS定义统一的数据格式
  • 打印分类结果

步骤1:定义数据结构

// src/types.ts
export interface Article {
  id: string;
  title: string;
  category: 'crawler' | 'react' | 'blockchain'; // 联合类型,只能是这三个值之一
  url: string;
}

这里的 'crawler' | 'react' | 'blockchain' 是TS的字面量联合类型,确保 category 不会拼错成 'reactjs''block chain'

步骤2:模拟数据源(假装是爬虫结果)

// src/data.ts
import { Article } from './types';

// 模拟从不同来源抓取的数据
export const mockArticles: Article[] = [
  {
    id: '1',
    title: '用Puppeteer实现动态网页爬虫',
    category: 'crawler',
    url: 'https://example.com/crawler1'
  },
  {
    id: '2',
    title: 'React 18新特性详解',
    category: 'react',
    url: 'https://example.com/react1'
  },
  {
    id: '3',
    title: '以太坊智能合约入门',
    category: 'blockchain',
    url: 'https://example.com/eth1'
  }
];

步骤3:分类并打印(主逻辑)

// src/index.ts
import { mockArticles } from './data';

function groupArticlesByCategory(articles: Article[]) {
  const groups: Record<string, Article[]> = {
    crawler: [],
    react: [],
    blockchain: []
  };

  for (const article of articles) {
    groups[article.category].push(article);
  }

  return groups;
}

function printTechShare(groups: Record<string, Article[]>) {
  console.log('=== 技术分享汇总 ===');
  for (const [category, list] of Object.entries(groups)) {
    console.log(`\n【${category.toUpperCase()}】`);
    list.forEach(item => {
      console.log(`- ${item.title} (${item.url})`);
    });
  }
}

// 执行
const grouped = groupArticlesByCategory(mockArticles);
printTechShare(grouped);

步骤4:编译并运行

在项目根目录执行:

npx tsc  # 编译 TS 到 JS
node dist/index.js  # 默认输出到 dist 目录(需在 tsconfig.json 中配置)

🔧 如果报错找不到 dist,请打开 tsconfig.json,取消注释并修改:

"outDir": "./dist",
"rootDir": "./src"

运行结果类似:

=== 技术分享汇总 ===

【CRAWLER】
- 用Puppeteer实现动态网页爬虫 (https://example.com/crawler1)

【REACT】
- React 18新特性详解 (https://example.com/react1)

【BLOCKCHAIN】
- 以太坊智能合约入门 (https://example.com/eth1)

看!虽然没真写爬虫,但通过TS的类型系统,我们确保了每篇文章都有正确的分类——这正是大型项目中最需要的可靠性。


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

Q1:必须写类型注解吗?JS不是更自由?

:TS支持“渐进式采用”。你可以先写纯JS代码,再逐步添加类型。而且很多类型能自动推断,你只需在关键地方(如函数参数、API返回值)加类型即可。

Q2:React 项目怎么用 TypeScript?

:Create React App 原生支持TS!只需:

npx create-react-app my-app --template typescript

组件文件名改为 .tsx,函数组件就可以享受类型检查:

interface Props {
  title: string;
  count: number;
}

const MyComponent: React.FC<Props> = ({ title, count }) => {
  return <h1>{title}: {count}</h1>;
};

Q3:区块链开发也需要TS?

:当然!主流区块链框架如 Hardhat(以太坊开发环境)、Substrate(Polkadot)都提供TS模板。智能合约虽多用 Solidity,但前端交互层几乎全是TS/JS。

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

:这是模块解析问题。确保:

  • 文件扩展名正确(.ts 而非 .js
  • tsconfig.json"moduleResolution": "node"
  • 使用相对路径导入:import { x } from './file'(带 ./

第五步:下一步学习建议

TypeScript只是起点,结合你的兴趣方向继续深入:

兴趣方向 推荐学习路径
前端开发 React + TypeScript + Vite → 学习泛型、Hook类型封装
后端/爬虫 Node.js + TS + Puppeteer/Cheerio → 处理HTML解析与类型安全
区块链 Hardhat + TS + Ethers.js → 编写测试脚本与前端DApp
通用提升 学习 泛型(Generics)Utility Types(如 Partial<T>

💬 我的建议:不要试图一次性掌握所有TS高级特性。先用基础类型写出可运行的代码,再在项目中遇到问题时针对性学习。比如当你需要“让一个函数支持多种类型”时,再去查“泛型”。


结语

30分钟很短,但足够让你迈出TypeScript的第一步。记住,类型不是限制,而是导航——它在你迷路前就提醒你“这条路走不通”。

无论是写一个简单的爬虫脚本,搭建React应用,还是探索区块链世界,TypeScript都能让你的代码更健壮、更易维护。

如果你觉得这篇教程有帮助,欢迎在掘金关注我,我会持续更新更多“零基础友好”的技术分享。下期见!

评论 0

最热最新
暂无评论
匿名用户Lv.1
0
影响力
0
文章
0
粉丝