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 定义联合类型
