Skip to content

一、TypeScript 是什么?

项目说明
本质JavaScript 的 超集
作用给 JS 增加 类型系统
运行时❌ 不能直接运行,需要编译成 JS
编译器tsc
核心价值类型安全 + IDE 智能提示 + 可维护性

一句话:

TS = 带类型的 JavaScript

二、基础类型(最重要)

1️⃣ 原始类型

ts
let count: number = 1
let name: string = 'Tom'
let isDone: boolean = true

⚠️ 不要滥用 any

ts
let value: any = 123 // 等于放弃 TS

2️⃣ 数组

ts
let list: number[] = [1, 2, 3]
let list2: Array<string> = ['a', 'b']

3️⃣ 元组(Tuple)

ts
let user: [string, number] = ['Tom', 18]

常用于:

  • useState
  • 返回固定结构的数据

4️⃣ 枚举(Enum)

ts
enum Status {
  Pending,
  Success,
  Error
}

let s: Status = Status.Success

📌 实战中 更推荐联合类型替代 enum(后面讲)

三、对象类型 & interface(高频)

1️⃣ 普通对象类型

ts
const user: {
  name: string
  age: number
} = {
  name: 'Tom',
  age: 18
}

2️⃣ interface(重点)

ts
interface User {
  name: string
  age: number
  avatar?: string   // 可选
  readonly id: number
}

const u: User = {
  id: 1,
  name: 'Tom',
  age: 18
}

✅ Vue props ✅ React props ✅ 接口返回值 都靠 interface

3️⃣ interface vs type(先记结论)

对比interfacetype
对象✅ 强
联合
扩展extends&
React / Vue常用常用

四、函数类型(前端必会)

1️⃣ 参数 & 返回值

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

2️⃣ 可选参数 & 默认值

ts
function greet(name: string, age?: number) {}
function greet2(name: string, age = 18) {}

3️⃣ 函数类型声明

ts
type Fn = (a: number, b: number) => number

const add: Fn = (a, b) => a + b

五、联合类型 & 字面量类型(非常重要)

1️⃣ 联合类型

ts
let id: number | string

2️⃣ 字面量联合(代替 enum)

ts
type Status = 'pending' | 'success' | 'error'

function setStatus(s: Status) {}

📌 React / Vue 状态、props 强烈推荐

六、类型推断 & 类型断言

1️⃣ 类型推断(TS 的灵魂)

ts
let num = 1 // 自动推断为 number

能不写就不写类型

2️⃣ 类型断言(as)

ts
const img = document.querySelector('img') as HTMLImageElement

⚠️ 断言 ≠ 转换 只是告诉 TS「我比你清楚」

七、泛型(进阶但常用)

1️⃣ 泛型函数

ts
function identity<T>(value: T): T {
  return value
}

2️⃣ 泛型接口(接口返回值)

ts
interface ApiResult<T> {
  code: number
  data: T
}

type User = { name: string }

const res: ApiResult<User> = {
  code: 0,
  data: { name: 'Tom' }
}

📌 Axios、Vue Query、React Query 核心用法

八、常见内置工具类型(必须认识)

工具类型作用
Partial<T>变可选
Required<T>变必选
Pick<T, K>取部分字段
Omit<T, K>排除字段
Record<K, T>key-value 对象
ts
type User = {
  id: number
  name: string
  age: number
}

type UserBase = Pick<User, 'id' | 'name'>

九、TS 在前端中的真实应用

场景用法
Vue propsdefineProps<T>()
React propsinterface Props {}
状态管理联合类型
表单Partial<T>
接口数据泛型

十、学习路线(给你一个清晰方向)

阶段 1(必会)

  • 基础类型
  • interface / type
  • 函数类型
  • 联合类型

阶段 2(前端实战)

  • 泛型
  • 工具类型
  • DOM 类型
  • Props / Emits

阶段 3(高手)

  • 条件类型
  • 映射类型
  • infer
  • TS + React / Vue 源码