🏠 Blog
·技术

TypeScript 高级类型技巧

分享一些实用的 TypeScript 高级类型技巧,让你的代码更加类型安全。

#TypeScript#前端

条件类型

条件类型是 TypeScript 中最强大的特性之一:

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

type A = IsString<'hello'> // true
type B = IsString<42>       // false

infer 关键字

infer 用于在条件类型中推断类型:

type ReturnType<T> = T extends (...args: any[]) => infer R ? R : never

type Fn = (x: number) => string
type R = ReturnType<Fn> // string

模板字面量类型

type EventName = `on${Capitalize<string>}`
type Handler = `handle${Capitalize<string>}`

实战:类型安全的 Builder

class QueryBuilder<T extends Record<string, any>> {
  private conditions: string[] = []

  where<K extends keyof T>(key: K, value: T[K]): this {
    this.conditions.push(`${String(key)} = ${value}`)
    return this
  }

  build(): string {
    return `SELECT * FROM table WHERE ${this.conditions.join(' AND ')}`
  }
}

总结

掌握这些高级类型技巧,可以显著提高代码的类型安全性。