🐣 前言:学了 JS 为啥还要学 TS?
JavaScript 是自由奔放的艺术家,而 TypeScript 是给他配了"防掉头盔"的骑士装备。
你可能听说过这些话:
- "TS 真的太香了,重构爽爆!"
- "没有 TS 的项目,越写越虚......"
- "用了 TS 之后,bug 数锐减。"
是不是觉得它像是什么"中高级选手"的玩意儿?
其实------TypeScript 是给"菜鸟"准备的最佳进阶利器!
为什么?
- 它帮你在写的时候发现错误,不是上线才抓狂
- 它让你不再迷失在函数参数和对象结构的丛林里
- 它让 VS Code 成为你写代码的"自动导航仪"
🧠 一、什么是 TypeScript?一句话搞懂!
TypeScript = JavaScript + 类型系统
它能干嘛?
- 编译时检查你写的 JS 是否"靠谱"
- 给变量、函数、对象"贴标签"(类型注解)
- 最终编译成浏览器能理解的标准 JS
⚙️ 二、开启你的 TS 项目第一步
🧰 安装 TypeScript
bash
npm install -D typescript
然后初始化配置:
bash
npx tsc --init
你会得到一个 tsconfig.json
,这是 TS 项目的"说明书"。
🪜 三、从 JS 项目"无痛"迁移到 TS(超详细步骤)
✅ 步骤 1:允许 TS 接管 JS 文件
在 tsconfig.json
加上:
ts
{
"allowJs": true,
"checkJs": false,
"isolatedModules": true
}
这样你可以边用 JS,边慢慢迁移。
✅ 步骤 2:把你的入口文件 .js
改成 .ts
bash
src/index.js → src/index.ts
如果是 React 项目,用 .tsx
替换:
App.js → App.tsx
✅ 步骤 3:用类型定义变量、函数、对象
ts
// 变量
let age: number = 18;
let name: string = "小明";
// 函数
function greet(person: string): string {
return `Hello, ${person}`;
}
🧱 四、项目开发中常用 TS 类型秘籍
类型 | 示例 | 说明 |
---|---|---|
string |
let title: string = "标题" |
字符串 |
number |
let count: number = 10 |
数字 |
boolean |
let isLoading: boolean = true |
布尔值 |
any |
let something: any = "??" |
任意类型(慎用) |
unknown |
更安全的 any ,需要断言后使用 |
更安全的万能类型 |
interface |
描述对象结构 | 比如定义 API 数据 |
enum |
枚举,适合状态管理 | enum Status {} |
union |
联合类型 `string | number` |
type |
类型别名,和 interface 类似 | type Foo = {} |
🧪 五、React 项目配合 TS 你能干这些事:
- 🧬 定义 props 类型,组件传值更安全
- 🔄 自定义 Hook 的入参出参都写明白
- 📦 接口数据结构清晰可见
- ⚙️ 写 Zustand、Redux 时类型自动提示不再瞎写!
举个小例子:
ts
interface ButtonProps {
text: string;
onClick: () => void;
}
const MyButton: React.FC<ButtonProps> = ({ text, onClick }) => {
return <button onClick={onClick}>{text}</button>;
};
🚨 六、小白常见坑 & 解药
症状 | 解法 |
---|---|
TS 报错说你类型不对? | 用 as 类型 临时断言 |
第三方库没有类型定义? | 装它的 @types,比如 @types/lodash |
类型太复杂搞不懂? | 用 any 兜底,别卡住 |
写了类型但 IDE 还报错? | 重启 TS 服务(VSCode ctrl+shift+p) |
const enum 报错? | 可能打包器不支持,改用普通 enum |
📦 七、项目结构怎么搭配 TypeScript?
建议结构如下:
scss
src/
├── types/ // 公共类型定义
├── api/ // 接口封装,定义返回类型
├── hooks/ // 自定义 hooks,写清参数 & 返回值
├── components/ // 每个组件 props 都用 interface 定义
└── utils/ // 工具函数用泛型处理
🧑🏫 八、总结一波!
- TypeScript 不难,它是你的语法导航仪、Bug 拦截器、项目护身符
- 项目中想一步到位全 TS?别急,先从混用模式开始
- 它是你 JS 技能升级的大招,是前往大厂路上的"通行证"!
📘 下一篇预告:《项目中如何一步步用好 TypeScript》
内容包括:
- 类型系统实战技巧:泛型、接口继承、类型守卫
- 如何封装一个强类型的 API 请求函数
- 如何在 Zustand、Redux 中完美搭配 TS
- 如何定义前后端接口数据类型