TypeScript 快速入门:30 分钟上手指南
作者:一名从中文系转码成功的前端工程师
写作初衷:我当初自学编程时,被 TypeScript 吓退过三次。今天,我想用最接地气的方式,带你 30 分钟真正“上手”它。
为什么你需要 TypeScript?
如果你听说过 JavaScript,那你一定知道它很灵活——但有时候太灵活了,就像骑一辆没有刹车的自行车。TypeScript(简称 TS)就是给这辆自行车加上刹车、仪表盘和导航系统。
简单来说:
- TypeScript = JavaScript + 类型系统
- 它能帮你提前发现代码错误,而不是等到用户点按钮时才崩溃
- 大厂项目(比如 GitHub 前端、VS Code)几乎都用 TS
- 即使你以后做运营、写爬虫、搞自动化脚本,TS 也能让你的代码更健壮
我当初学的时候,以为 TS 是“高深语言”,其实它只是 JS 的“加强版”。只要你会写 JS,就能学会 TS!
第一步:环境准备(5 分钟搞定)
我们不需要复杂配置!只需三样工具:
| 工具 | 作用 | 安装方式 |
|---|---|---|
| Node.js | 运行 JavaScript/TypeScript 的引擎 | 官网下载安装://nodejs.org |
| VS Code | 最好用的免费代码编辑器 | 官网下载://code.visualstudio.com |
| TypeScript 编译器 | 把 TS 转成 JS 的工具 | 终端运行 npm install -g typescript |
操作步骤(跟着做就行):
安装 Node.js
打开终端(Mac 用 Terminal,Windows 用 PowerShell),输入:node -v npm -v如果显示版本号(如 v18.17.0),说明已安装。否则去官网下载 LTS 版。
全局安装 TypeScript
npm install -g typescript验证安装
tsc -v # 应该输出类似 Version 5.2.2创建你的第一个 TS 项目
mkdir my-first-ts cd my-first-ts code . # 用 VS Code 打开当前文件夹
✅ 小贴士:如果
code .命令无效,打开 VS Code → 左下角齿轮图标 → “命令面板” → 输入 “shell command” → 选择 “Install 'code' command in PATH”。
第二步:核心概念(用大白话讲清楚)
1. 什么是“类型”(Type)?
在 JS 中,你可以随便写:
let name = "张三";
name = 123; // 合法!但可能出 bug
但在 TS 中,你可以提前声明变量应该是什么类型:
let name: string = "张三";
name = 123; // ❌ 报错!不能把数字赋值给字符串
常见类型就这几个:
| 类型 | 示例 | 说明 |
|---|---|---|
string |
"hello" |
文本 |
number |
42, 3.14 |
数字 |
boolean |
true, false |
真/假 |
array |
[1,2,3] 或 string[] |
列表 |
object |
{name: "张三"} |
对象 |
any |
任意值 | 不推荐!等于关掉 TS 保护 |
我当初学的时候,总想用
any图省事,结果后来调试花了更多时间。记住:越早约束类型,后期越省心!
2. 函数也有类型!
JS 函数:
function greet(name) {
return "Hello " + name;
}
TS 函数(明确参数和返回值类型):
function greet(name: string): string {
return "Hello " + name;
}
greet("李四"); // ✅
greet(123); // ❌ 报错!
3. 接口(Interface)——定义对象的“合同”
想象你要开发一个用户系统,每个用户必须有 name 和 age。你可以用 interface 定义这个“合同”:
interface User {
name: string;
age: number;
}
const user1: User = { name: "王五", age: 25 }; // ✅
const user2: User = { name: "赵六" }; // ❌ 缺少 age!
这对团队协作、GitHub 项目维护特别有用——别人一看就知道这个对象该长什么样。
第三步:实战项目——做一个“运营数据小助手”
假设你是运营人员,每天要处理一批用户数据,需要:
- 验证用户信息是否完整
- 生成欢迎语
- 导出为 JSON(方便后续用爬虫或自动化工具处理)
我们就用 TS 写这个小工具!
步骤 1:初始化项目
在 my-first-ts 文件夹中,创建 index.ts:
touch index.ts
步骤 2:定义用户结构
// index.ts
interface User {
id: number;
name: string;
email: string;
isActive: boolean;
}
步骤 3:写验证函数
function validateUser(user: User): boolean {
if (!user.name || !user.email) {
console.log(`❌ 用户 ${user.id} 信息不全`);
return false;
}
return true;
}
步骤 4:生成欢迎语
function generateWelcomeMessage(user: User): string {
return `亲爱的 ${user.name},欢迎回来!您的邮箱是:${user.email}`;
}
步骤 5:模拟数据并运行
const users: User[] = [
{ id: 1, name: "Alice", email: "alice@example.com", isActive: true },
{ id: 2, name: "", email: "bob@example.com", isActive: false }, // 名字为空
{ id: 3, name: "Charlie", email: "", isActive: true }, // 邮箱为空
];
users.forEach(user => {
if (validateUser(user)) {
console.log(generateWelcomeMessage(user));
}
});
步骤 6:编译并运行
在终端执行:
tsc index.ts # 生成 index.js
node index.js # 运行 JS 文件
输出:
❌ 用户 2 信息不全
❌ 用户 3 信息不全
亲爱的 Alice,欢迎回来!您的邮箱是:alice@example.com
🎉 看!TS 帮我们提前发现了两条脏数据。如果这是真实运营场景,你就能避免给用户发错邮件!
第四步:扩展——连接 GitHub & 爬虫场景
虽然 TS 主要用于前端,但它也能用于后端(Node.js)甚至爬虫脚本!
场景 1:从 GitHub API 获取仓库信息
安装 HTTP 请求库:
npm init -y
npm install axios
npm install @types/node @types/axios --save-dev
新建 github.ts:
import axios from 'axios';
interface Repo {
name: string;
description: string | null;
stargazers_count: number;
}
async function fetchRepos(username: string): Promise<Repo[]> {
const url = `https://api.github.com/users/${username}/repos`;
const response = await axios.get<Repo[]>(url);
return response.data;
}
// 使用
fetchRepos('microsoft')
.then(repos => {
repos.slice(0, 3).forEach(repo => {
console.log(`⭐️ ${repo.stargazers_count} - ${repo.name}`);
});
});
编译运行:
tsc github.ts
node github.js
这里 TS 的类型让我们知道
repo一定有stargazers_count字段,不用猜!
场景 2:写一个简单的“爬虫”脚本
比如抓取某个页面的标题(仅演示,遵守 robots.txt!):
npm install cheerio
npm install @types/cheerio --save-dev
// crawler.ts
import axios from 'axios';
import * as cheerio from 'cheerio';
async function getPageTitle(url: string): Promise<string> {
const { data } = await axios.get(url);
const $ = cheerio.load(data);
return $('title').text().trim();
}
getPageTitle('https://example.com')
.then(title => console.log('网页标题:', title));
即使你是做运营或数据分析,用 TS 写这类自动化脚本,也能大幅减少“undefined is not a function”这类低级错误。
新手常见问题解答
Q1:TS 和 JS 到底有什么区别?我要重学吗?
不用! TS 是 JS 的超集。所有合法的 JS 代码都是合法的 TS 代码。你可以在现有 JS 项目中逐步添加类型。
Q2:为什么我的 TS 文件报错,但 JS 能运行?
因为 TS 在编译阶段就检查错误,而 JS 要到运行时才报错。TS 的目标是“提前发现问题”。
Q3:any 类型是不是万能的?
技术上是,但强烈不建议。用了 any 就等于放弃 TS 的最大优势。尽量用具体类型,实在不确定可以用 unknown。
Q4:如何在已有 JS 项目中引入 TS?
- 把
.js改成.ts - 逐步添加类型注解
- 配置
tsconfig.json(稍复杂,初学者可先跳过)
学习建议 & 下一步路线
避坑指南(血泪经验!)
- ❌ 不要一上来就看官方文档(太枯燥)
- ✅ 先写 JS,再逐步加类型
- ✅ 遇到报错别慌,90% 是类型不匹配,看红字提示就行
- ✅ 用 VS Code!它会实时标红错误,比命令行友好得多
推荐学习路径
- 基础:掌握
string/number/boolean/array/object类型 - 进阶:学习
interface、type、泛型(Generic) - 工程化:配置
tsconfig.json,集成到 React/Vue 项目 - 实战:用 TS 重写你以前的 JS 小项目(比如待办清单、天气查询)
免费资源推荐
- TypeScript 官方手册(中文)://www.typescriptlang.org/zh/docs/
- TypeScript 入门教程(阮一峰)://ts.xcatliu.com/
- GitHub 上搜
typescript-starter,有很多模板项目
结语
30 分钟过去了,你现在:
- 装好了 TS 开发环境
- 理解了“类型”的价值
- 写了一个带类型检查的运营小工具
- 甚至尝试了 GitHub API 和爬虫脚本!
TypeScript 不是门槛,而是拐杖。它不会让你变成“高级程序员”,但能让你少加班、少背锅、多睡两小时。
我当初转码时,就是因为 TS 帮我避免了无数线上事故,才顺利拿到第一份前端 offer。希望这篇指南,也能成为你编程路上的第一块垫脚石。
现在,打开你的 VS Code,新建一个 .ts 文件,敲下第一行代码吧!
console.log("Hello, TypeScript world!");

评论 0