·技术
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 ')}`
}
}
总结
掌握这些高级类型技巧,可以显著提高代码的类型安全性。