30分钟从零上手TypeScript:前端新人必看实战指南
大家好,我是掘金上常写教程的全栈工程师。最近在带实习生时发现,很多同学刚接触 TypeScript(简称 TS)就被它的“类型系统”吓退了。其实我当初学的时候也一样——以为它很复杂,结果三天就上手了!今天这篇教程,就是专为完全零基础的你准备的。不讲理论堆砌,只带你动手写代码,30分钟内写出第一个 TS 项目。文末还会附上一道经典面试题挑战,帮你检验学习成果!
为什么前端要学 TypeScript?
简单说:TypeScript = JavaScript + 类型系统。
- JavaScript 是动态语言,变量类型在运行时才确定,容易出错(比如把字符串当成数字相加)。
- TypeScript 在 JS 基础上增加了静态类型检查,让你在写代码时就能发现错误,而不是等到用户点按钮才发现页面崩了。
📌 举个栗子:
// JS 中这段代码不会报错,但逻辑明显有问题 function add(a, b) { return a + b; } console.log(add("1", 2)); // 输出 "12",不是 3!而用 TS,你可以提前声明参数必须是数字:
function add(a: number, b: number): number { return a + b; } // 如果传字符串,编辑器立刻标红提示!
现在,大厂前端项目几乎都用 TS(React/Vue 官方也全力支持),掌握 TS 已成面试硬通货。
第一步:搭建开发环境(5分钟搞定)
别担心,TS 的环境比你想象中简单。只需三步:
1. 安装 Node.js
去 nodejs.org 下载 LTS 版本(建议 v18+),安装后终端输入:
node -v # 查看版本,如 v18.17.0
npm -v # 查看 npm 版本
2. 全局安装 TypeScript 编译器
npm install -g typescript
验证是否安装成功:
tsc -v # 显示版本号,如 Version 5.2.2
3. 创建项目目录
mkdir ts-demo && cd ts-demo
npm init -y # 生成 package.json
tsc --init # 生成 tsconfig.json(TS 配置文件)
💡 避坑指南:
如果tsc --init报错,请检查是否全局安装成功。Mac/Linux 用户可能需要加sudo。
此时你的项目结构应该是:
ts-demo/
├── package.json
└── tsconfig.json ← TS 的“说明书”
第二步:核心概念速通(配代码示例)
1. 基础类型(最常用5个)
| 类型 | 示例 | 说明 |
|---|---|---|
number |
let age: number = 25; |
整数、小数都行 |
string |
let name: string = "Alice"; |
字符串必须加引号 |
boolean |
let isDone: boolean = true; |
只能是 true/false |
any |
let anything: any = "hello"; |
关闭类型检查(慎用!) |
void |
function warn(): void { ... } |
函数无返回值 |
✅ 最佳实践:尽量不用
any!它会让 TS 失去意义。
2. 数组和对象
// 数组:两种写法
let list1: number[] = [1, 2, 3];
let list2: Array<string> = ["a", "b"];
// 对象:用 interface 定义结构
interface User {
name: string;
age: number;
}
const user: User = { name: "Bob", age: 30 };
3. 函数:参数和返回值都要标注
// 箭头函数写法
const greet = (name: string): string => {
return `Hello, ${name}!`;
};
// 可选参数(加?)
const logUser = (name: string, age?: number) => {
console.log(name, age); // age 可能是 undefined
};
4. 联合类型(一个变量多种可能)
// id 可以是数字或字符串
let id: string | number;
id = 123; // OK
id = "abc"; // OK
id = true; // ❌ 报错!
第三步:实战!写一个待办事项(Todo List)
现在用 TS 写一个极简 Todo 应用,巩固刚才的知识。
步骤1:创建文件
在项目根目录新建 todo.ts:
步骤2:定义数据结构
// 定义 Todo 项的结构
interface TodoItem {
id: number;
text: string;
completed: boolean;
}
// 初始化列表
let todos: TodoItem[] = [
{ id: 1, text: "学习 TypeScript", completed: false },
{ id: 2, text: "写代码", completed: true }
];
步骤3:添加核心功能
// 添加新任务
function addTodo(text: string): void {
const newTodo: TodoItem = {
id: Date.now(), // 用时间戳当ID(仅演示)
text,
completed: false
};
todos.push(newTodo);
}
// 切换完成状态
function toggleTodo(id: number): void {
const todo = todos.find(item => item.id === id);
if (todo) {
todo.completed = !todo.completed;
}
}
// 打印所有任务
function printTodos(): void {
todos.forEach(todo => {
const status = todo.completed ? "[✓]" : "[ ]";
console.log(`${status} ${todo.text}`);
});
}
步骤4:测试运行
在文件末尾加:
// 测试代码
addTodo("喝杯咖啡");
toggleTodo(1);
printTodos();
步骤5:编译并执行
tsc todo.ts # 生成 todo.js
node todo.js # 运行 JS 文件
预期输出:
[✓] 学习 TypeScript
[✓] 写代码
[ ] 喝杯咖啡
💡 关键点:TS 代码不能直接运行!必须用
tsc编译成 JS 后再执行。
新手常见问题解答
Q1:TS 文件保存后没自动生成 JS?
原因:默认 tsconfig.json 没开启监听模式。
解决:终端运行 tsc --watch,它会自动监听 .ts 文件变化并实时编译。
Q2:为什么我的编辑器不提示类型错误?
检查:
- 文件后缀必须是
.ts(不是.js) - VS Code 需安装官方插件 TypeScript Hero(一般自带)
- 确保顶部有
// @ts-check注释(现代编辑器通常不需要)
Q3:any 和 unknown 有什么区别?
any:完全绕过类型检查,危险!unknown:安全版any,使用前必须做类型判断。
let val: unknown = "hello";
// val.toUpperCase(); // ❌ 报错!
if (typeof val === "string") {
val.toUpperCase(); // ✅ OK
}
面试题挑战:你能答对吗?
题目:以下 TS 代码会报错吗?为什么?
const arr: number[] = []; arr.push("123");
点击查看答案
会报错!
因为 arr 被声明为 number[](数字数组),而 "123" 是字符串。TS 在编译阶段就会阻止这种类型不匹配的操作,避免运行时出现意外结果。
这道题考察的是 TS 的静态类型检查机制,也是面试高频考点。如果你能解释清楚,说明你已经理解 TS 的核心价值了!
下一步学习建议
深入学习:
- 官方文档 TypeScript Handbook(英文但清晰)
- 掘金专栏《TypeScript 从入门到放弃》(别被标题骗,其实很友好)
实战进阶:
- 用 TS 重写你以前的 JS 项目
- 尝试在 React/Vue 中集成 TS(Create React App 默认支持)
避坑提醒:
- 不要一上来就学高级类型(如泛型、条件类型),先掌握基础类型和接口
- 遇到报错别慌,90% 的错误信息都很直白,按提示改就行
最后说一句:我带过的实习生里,最快的一个下午就用 TS 重构了公司内部工具。TypeScript 不是门槛,而是你的护甲——它让你写代码更自信,debug 更高效。现在就打开编辑器,敲下你的第一行 let hello: string = "world"; 吧!

评论 0