TypeScript快速入门:30分钟上手指南
大家好,我是一名开源项目维护者,也是一位前端讲师。这些年我写过不少技术文档,也带过很多零基础的学员。今天之所以要写这篇《TypeScript快速入门》教程,是因为我发现越来越多的前端岗位在招聘要求中明确写着“熟悉TypeScript”——它已经不再是可选项,而是求职的硬通货。
我当初学的时候,也是一头雾水:JavaScript 不是已经能跑了吗?为什么还要加类型?但当我真正用上 TypeScript 后,才发现它不仅能大幅减少 bug,还能让代码更易读、更易维护。尤其在团队协作和大型项目中,TypeScript 的价值无可替代。
所以,如果你正在准备前端求职,或者想提升自己的工程能力,那么花30分钟掌握 TypeScript 的核心概念,绝对是你近期最值得的投资。
什么是 TypeScript?
简单来说:TypeScript 是 JavaScript 的超集。这意味着:
- 所有合法的 JavaScript 代码都是合法的 TypeScript 代码;
- TypeScript 在 JavaScript 的基础上增加了静态类型系统;
- 最终,TypeScript 代码会被编译成纯 JavaScript,在浏览器或 Node.js 中运行。
📌 关键点:TypeScript 不是新语言,而是给 JavaScript 加了“类型检查”的增强版。
第一步:环境搭建(5分钟搞定)
我们不需要复杂的工具链,只需以下几步:
1. 安装 Node.js
前往 https://nodejs.org 下载 LTS 版本(推荐 18.x 或 20.x),安装后在终端执行:
node -v
npm -v
看到版本号即表示安装成功。
2. 全局安装 TypeScript 编译器
npm install -g typescript
验证安装:
tsc -v
# 输出类似:Version 5.4.5
3. 初始化项目
创建一个新文件夹,比如 ts-demo,进入后初始化:
mkdir ts-demo && cd ts-demo
npm init -y
4. 创建第一个 TypeScript 文件
新建 hello.ts:
console.log("Hello, TypeScript!");
5. 编译并运行
tsc hello.ts
node hello.js
你会看到输出:Hello, TypeScript!
✅ 恭喜!你已经完成了 TypeScript 的第一次编译运行。
第二步:核心概念速览(15分钟)
TypeScript 的核心就是“类型”。下面我用最直白的方式解释几个关键概念。
1. 类型注解(Type Annotation)
告诉 TypeScript 某个变量应该是什么类型。
let age: number = 25;
let name: string = "小明";
let isActive: boolean = true;
如果不写类型,TypeScript 会自动推断(类型推断):
let price = 99; // 自动推断为 number
// price = "free"; // ❌ 报错!不能把 string 赋值给 number
2. 常见基础类型
| 类型 | 说明 | 示例 |
|---|---|---|
number |
数字 | 42, 3.14 |
string |
字符串 | "hello", 'world' |
boolean |
布尔值 | true, false |
null / undefined |
空值 | null, undefined |
any |
任意类型(慎用!) | let x: any = "hi"; x = 10; |
⚠️ 避坑提示:尽量避免使用
any,它会关闭类型检查,失去 TypeScript 的意义。
3. 数组与对象
数组
let scores: number[] = [90, 85, 95];
// 或者用泛型写法
let names: Array<string> = ["Alice", "Bob"];
对象
let user: { name: string; age: number } = {
name: "张三",
age: 30
};
但每次写对象结构太麻烦?用 接口(Interface)!
4. 接口(Interface)——定义对象的“形状”
interface User {
name: string;
age: number;
isActive?: boolean; // ? 表示可选属性
}
const user1: User = { name: "李四", age: 28 };
const user2: User = { name: "王五", age: 32, isActive: true };
💡 我当初学的时候,以为 interface 是类,后来才明白它只是“契约”——规定对象必须长什么样。
5. 函数类型
函数也可以标注参数和返回值类型:
function greet(name: string): string {
return "Hello, " + name;
}
// 箭头函数
const add = (a: number, b: number): number => a + b;
如果函数不返回值,用 void:
function logMessage(msg: string): void {
console.log(msg);
}
6. 联合类型(Union Type)
一个变量可能是多种类型之一:
let id: number | string = 123;
id = "abc123"; // ✅ 合法
function printId(id: number | string) {
if (typeof id === "string") {
console.log(id.toUpperCase());
} else {
console.log(id.toFixed(2));
}
}
第三步:动手实战 —— 构建一个简易任务管理器(8分钟)
现在我们用所学知识,写一个带类型的 Todo 应用核心逻辑。
步骤 1:定义数据结构
// task.ts
interface Task {
id: number;
title: string;
completed: boolean;
}
let tasks: Task[] = [];
步骤 2:实现核心函数
// 添加任务
function addTask(title: string): void {
const newTask: Task = {
id: Date.now(),
title,
completed: false
};
tasks.push(newTask);
}
// 切换完成状态
function toggleTask(id: number): void {
const task = tasks.find(t => t.id === id);
if (task) {
task.completed = !task.completed;
}
}
// 获取未完成任务数量
function getActiveCount(): number {
return tasks.filter(t => !t.completed).length;
}
步骤 3:测试一下
addTask("学习 TypeScript");
addTask("投递前端岗位");
console.log("当前任务:", tasks);
console.log("未完成数:", getActiveCount());
toggleTask(tasks[0].id);
console.log("切换后未完成数:", getActiveCount());
保存为 task.ts,然后编译运行:
tsc task.ts
node task.js
你会看到清晰的输出,而且全程有类型保护——比如你误传 addTask(123),TS 会立刻报错!
新手常见问题解答(FAQ)
Q1:TypeScript 编译后生成的 .js 文件要不要提交到 Git?
建议不提交。通常我们会把 *.js 和 *.js.map 加入 .gitignore,只提交 .ts 源码。
Q2:报错 “Cannot find name ‘console’” 怎么办?
这是缺少类型定义。确保你的 tsconfig.json 中包含 "lib": ["ES2020"](后面会讲)。
Q3:如何让 TypeScript 支持 ES6+ 语法?
通过配置 tsconfig.json 的 target 字段,比如 "target": "ES2020"。
Q4:TypeScript 能用 npm 包吗?
可以!但有些包需要额外安装类型声明文件,例如:
npm install --save-dev @types/lodash
Q5:我写的 JS 项目能直接改成 TS 吗?
完全可以!只需把 .js 改成 .ts,然后逐步添加类型注解即可。TypeScript 对 JavaScript 100% 兼容。
下一步学习建议 & 求职加分项
学习路径推荐
- 掌握基础类型、接口、函数类型 → 你现在已经做到了!
- 学习泛型(Generics):让函数/类更灵活且保持类型安全。
function identity<T>(arg: T): T { return arg; } - 理解类型别名(type) vs 接口(interface)
- 配置 tsconfig.json:学会自定义编译选项。
- 集成到 React/Vue 项目:主流框架都支持 TS。
求职中的 TypeScript 优势
根据我对多个大厂招聘 JD 的分析,以下是高频要求:
| 公司类型 | TypeScript 要求 |
|---|---|
| 大厂(阿里、腾讯、字节) | 必须熟练使用,能设计类型系统 |
| 中小型公司 | 熟悉即可,能看懂 TS 代码 |
| 外企/远程岗 | 几乎全部要求 TS 经验 |
📌 真实案例:我曾辅导的一位学员,原本只会 JavaScript,在简历中加入“使用 TypeScript 重构个人项目,减少 70% 运行时错误”后,面试邀约率翻倍。
避坑指南
- 不要过度设计类型:初期用简单 interface 即可,别一上来就搞复杂泛型。
- 开启 strict 模式:在
tsconfig.json中设置"strict": true,能帮你发现更多潜在问题。 - 善用 VS Code:它对 TypeScript 有原生支持,自动提示、跳转、错误高亮一应俱全。
结语
恭喜你!在30分钟内,你已经掌握了 TypeScript 的核心概念,并完成了一个带类型的实战小项目。虽然这只是开始,但你已经跨过了最难的第一步。
记住:TypeScript 不是为了增加代码量,而是为了减少 bug 和提升协作效率。在求职市场上,它已经成为区分“能写代码”和“能写高质量代码”的重要标志。
接下来,建议你:
- 将自己以前的 JavaScript 小项目改造成 TypeScript;
- 在 LeetCode 上用 TypeScript 刷题;
- 阅读开源项目的 TS 代码(比如 Vue 3 源码)。
坚持下去,你会发现:类型不是束缚,而是翅膀。
祝你 coding 顺利,早日拿到心仪 offer!

评论 0