TypeScript快速入门:30分钟上手指南

前端里的光
2025-06-13 22:56
阅读 613

🚀 开篇:什么是TypeScript,它有什么用?

🚀 开篇:什么是TypeScript,它有什么用?

在开始之前,先让我们简单介绍一下 TypeScript

TypeScript 是 JavaScript 的一个“加强版”。它是在 JavaScript 基础上加了一层「类型系统」。你可以理解为:

TypeScript = JavaScript + 类型检查系统

通俗地说,JavaScript是自由的,TypeScript是有纪律的

比如你在 JavaScript 中写:

let age = "18";

这在 JS 里没问题,但在 TypeScipt 中会报错,因为它期望 age 是一个数字(number)而不是字符串(string)。这种严格的类型检查能帮我们提前发现错误,避免运行时崩溃

🧠 学完你能做什么?

  • 编写更健壮、易维护的代码
  • 在大型项目中提高代码安全性
  • 更好地使用现代前端框架(如 React/Vue/Angular)
  • 提升团队协作效率

🧰 环境准备:搭建你的第一个TypeScript开发环境

🧰 环境准备:搭建你的第一个TypeScript开发环境

我们不需要安装一大堆工具,只需要两个小工具即可:

Step 1: 安装 Node.js 和 npm

👉 官网下载地址:https://nodejs.org/zh-cn/

安装完成后,在命令行中输入以下命令查看版本:

node -v
npm -v

如果有版本号输出(如 v18.16.0 和 9.x.x),说明安装成功!

Step 2: 安装 TypeScript

打开终端或命令行,执行:

npm install -g typescript

验证是否安装成功:

tsc -v

你会看到类似这样的输出:Version 5.x.x

Step 3: 创建你的第一个 .ts 文件

新建一个文件夹,比如叫 my-ts-project,然后在里面新建一个文件:hello.ts

写入如下代码:

console.log("Hello, TypeScript!");

保存后,在终端进入该目录并执行:

tsc hello.ts

这时你会发现在同一个目录下多了一个 hello.js 文件 —— 这就是 TypeScript 编译后的 JavaScript 文件!

再运行一下看看效果:

node hello.js

你应该能看到输出:Hello, TypeScript!


🌟 核心概念:五个最基础的知识点

🌟 核心概念:五个最基础的知识点

我们来逐步学习 TypeScript 的核心基础知识,并结合代码示例帮助你理解。


① 变量声明与类型注解

在 JavaScript 中我们可以这样写变量:

let name = 'Tom';
let age = 25;

而在 TypeScript 中,我们可以给变量加上类型注解:

let name: string = 'Tom';
let age: number = 25;

也可以直接简写:

let isStudent: boolean = true;
let score: number = 90.5;

💡 如果你漏掉类型注解,TS也会根据赋值自动推断类型,但我们建议一开始就写明类型!

❗常见错误:

如果你这样写,TS会报错:

age = "30"; // 错误:不能将类型 "string" 分配给类型 "number"

② 函数参数和返回值类型

函数也要标注参数类型和返回类型:

function greet(name: string): string {
    return "Hello, " + name;
}

let message = greet("Alice");
console.log(message);

如果没写返回值类型,TS也能帮你判断,但显式写出更好:

function add(a: number, b: number): number {
    return a + b;
}

③ 数组的类型定义

数组有两种写法:

let numbers: number[] = [1, 2, 3];
// 或者
let names: Array<string> = ["Lucas", "Ethan"];

不兼容的例子:

names.push(42); // 报错:类型“number”不能添加到类型“string[]”

④ 对象类型的定义(type)

可以用 type 自定义对象类型:

type Person = {
    name: string;
    age: number;
    isStudent?: boolean; // ? 表示可选属性
};

let user: Person = {
    name: "Bob",
    age: 20
};

这样你就知道这个对象应该长什么样,不会遗漏关键字段。


⑤ 联合类型 |(Union Types)

有时候变量可以是多个类型中的一个,用 | 符号表示:

let id: string | number;

id = 123; // OK
id = "abc"; // 也OK

id = true; // 报错:类型“boolean”不可赋值

联合类型非常适合处理不确定数据来源的情况。


🏗️ 实战项目:写一个“计算器小程序”

我们现在来实战演练一下,做一个简单的“加减乘除”计算器吧!

Step 1: 新建文件 calculator.ts

内容如下:

type Operation = "add" | "subtract" | "multiply" | "divide";

function calculate(a: number, b: number, op: Operation): number {
    switch (op) {
        case "add":
            return a + b;
        case "subtract":
            return a - b;
        case "multiply":
            return a * b;
        case "divide":
            if (b === 0) {
                throw new Error("不能除以0!");
            }
            return a / b;
        default:
            throw new Error("无效的操作");
    }
}

let result = calculate(10, 5, "divide");
console.log("结果是:" + result);

Step 2: 编译并运行

在终端运行:

tsc calculator.ts
node calculator.js

你应该看到输出:

结果是:2

🎉 太棒了!你已经完成了第一个带类型系统的 TS 小程序!


❓常见问题解答(FAQ)

Q1:TypeScript必须编译吗?可以直接运行吗?

是的。TypeScript 需要被编译成 JavaScript 才能在浏览器或 Node.js 中运行。不过有一种方式可以跳过手动编译:安装 ts-node

npm install -g ts-node

然后直接运行:

ts-node calculator.ts

这样就不用每次执行 tsc 编译啦!


Q2:TypeScript会不会限制灵活性?

不会。TS 是渐进增强式的,支持所有 JS 语法。你可以先用 JS 写,再逐步加入类型检查。


Q3:我以前学过 JS,TS 怎么过渡?

很棒!JS 是基础。你只需要记住在变量和函数上加类型标注就好,其他都是一样的。


Q4:能否把旧 JS 项目改成 TS?

完全可以!步骤是:

  1. 修改 .js 文件名成 .ts
  2. 给关键变量/函数加上类型
  3. 慢慢完善类型系统

TypeScript 支持「渐进迁移」,所以不必担心重写成本。


📚 下一步学习路径建议

恭喜你,你现在已经是 TypeScript 的入门玩家啦!

下面是你可以继续深入的方向:

✅ 建议一:掌握基本类型系统

  • 接口 Interface vs type
  • 泛型 Generic
  • 元组 Tuple、枚举 Enum

✅ 建议二:学会使用类型推断

  • 让TS自己分析类型的能力
  • 使用联合类型、交叉类型等高级特性

✅ 建议三:搭配React或Vue使用

✅ 推荐资源


📝 总结

在这篇教程中,我们做了这些事:

✅ 介绍了 TypeScript 是什么,为什么要学
✅ 搭建了开发环境
✅ 学习了基本语法和五大核心知识点
✅ 实战编写了一个简易计算器
✅ 解答了初学者常问的问题
✅ 规划了下一步的学习路线

只要每天坚持实践一点 TypeScript,你会发现它真的能让你写出更好的代码,成为更专业的开发者!


📘 文末小彩蛋:一句话记住 TS 的本质

“TypeScript 是 JavaScript 的加强版,就像穿上了盔甲的士兵。”

如果你喜欢这篇文章,欢迎分享给更多想入门的同学,一起进步,一起成长!


🔚 END ✅

评论 0

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