TypeScript 30分钟上手:零基础也能写爬虫、React和区块链项目?
大家好,我是阿哲,985计算机系毕业,现在是一名全栈工程师,也是掘金的常驻作者。最近很多刚入门的朋友私信问我:“TypeScript到底难不难?我连JavaScript都还没搞明白,能直接学吗?”
我的答案是:完全可以! 而且越早学越好。
我当初学的时候,也是从“变量怎么声明”开始的。那时候看到 let name: string = "Alice" 这种写法,还以为是在写Java。但后来发现,TypeScript(简称TS)其实就是在JavaScript的基础上加了一层“安全网”——它能提前告诉你哪里可能出错,而不是等到用户点击按钮时才崩溃。
更妙的是,无论你是想写前端React应用、后端爬虫脚本,还是研究区块链智能合约,TS都能派上用场。今天这篇教程,就带你用30分钟快速上手TypeScript,并通过一个微型项目串联起这些热门关键词。
第一步:环境准备(5分钟搞定)
要写TS代码,你只需要三样东西:
- Node.js(建议v18+)
- 代码编辑器(推荐 VS Code)
- 全局安装 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