Blog
TypeScript 类型体操:从入门到放弃
探讨 TypeScript 高级类型的使用技巧,包括条件类型、模板字面量类型和映射类型。

TypeScript最佳实践
条件类型(Conditional Types)
条件类型是 TypeScript 中非常强大的特性,允许我们根据类型关系创建新类型:
// 基础语法
type IsString<T> = T extends string ? true : false
// 使用
type A = IsString<"hello"> // true
type B = IsString<42> // false
常用内置条件类型
Exclude<T, U>— 从 T 中排除可分配给 U 的类型Extract<T, U>— 从 T 中提取可分配给 U 的类型NonNullable<T>— 从 T 中排除 null 和 undefinedReturnType<T>— 获取函数返回类型
模板字面量类型
TypeScript 4.1 引入的模板字面量类型让我们可以在类型层面操作字符串:
type EventName<T extends string> = `on${Capitalize<T>}`
// 'onClick' | 'onChange' | 'onFocus'
type UIEvent = EventName<"click" | "change" | "focus">
映射类型
// 将所有属性变为可选的
type Partial<T> = {
[K in keyof T]?: T[K]
}
// 将所有属性变为只读的
type Readonly<T> = {
readonly [K in keyof T]: T[K]
}
实用建议
类型体操很有趣,但在生产代码中,保持类型定义简洁易懂更为重要。不要为了炫技而写出难以维护的类型代码。
分享到: