Spring Boot 3.0 新特性详解

admin

2025-11-23 05:21 阅读 3422

Spring Boot 3.0的新功能和升级指南

TypeScript 高级类型技巧

TypeScript 的类型系统非常强大,掌握高级类型可以写出更安全、更易维护的代码。

1. 泛型基础

// 泛型函数
function identity<T>(arg: T): T {
  return arg
}

// 泛型接口
interface Container<T> {
value: T
getValue(): T
}

// 泛型约束
function getLength<T extends { length: number }>(arg: T): number {
return arg.length
}

2. 条件类型

type IsString<T> = T extends string ? true : false

type A = IsString<string> // true
type B = IsString<number> // false

// 内置条件类型
type Exclude<T, U> = T extends U ? never : T
type Extract<T, U> = T extends U ? T : never

3. 映射类型

// 自定义 Partial
type MyPartial<T> = {
  [P in keyof T]?: T[P]
}

// 自定义 Required
type MyRequired<T> = {
[P in keyof T]-?: T[P]
}

// 自定义 Readonly
type MyReadonly<T> = {
readonly [P in keyof T]: T[P]
}

4. infer 关键字

// 提取函数返回类型
type ReturnType<T> = T extends (...args: any[]) => infer R ? R : never

// 提取 Promise 值类型
type Awaited<T> = T extends Promise<infer U> ? U : T

// 提取数组元素类型
type ElementOf<T> = T extends (infer E)[] ? E : never

5. 模板字面量类型

type EventName = "click" | "focus" | "blur"
type Handler = `on${Capitalize<EventName>}`
// "onClick" | "onFocus" | "onBlur"

type HTTPMethod = “GET” | “POST” | “PUT” | “DELETE”
type Endpoint = /api/${string}

6. 实用类型组合

interface User {
  id: number
  name: string
  email: string
  password: string
}

// 创建用户(无 id)
type CreateUser = Omit<User, “id”>

// 公开用户信息(无密码)
type PublicUser = Omit<User, “password”>

// 更新用户(全部可选)
type UpdateUser = Partial<Omit<User, “id”>>

// 用户凭证
type Credentials = Pick<User, “email” | “password”>

7. 类型守卫

// 类型谓词
function isString(value: unknown): value is string {
  return typeof value === "string"
}

// in 操作符
interface Cat { meow(): void }
interface Dog { bark(): void }

function speak(pet: Cat | Dog) {
if (“meow” in pet) {
pet.meow()
} else {
pet.bark()
}
}

最佳实践

  • 优先使用 unknown 而非 any
  • 使用 const 断言保留字面量类型
  • 为复杂类型添加注释说明
  • 使用 type 而非 interface 定义联合类型
0 条评论