TypeScript详解十四:自定义工具类型
// 定义一个简单的工具类型,用于获取对象中所有键的联合类型
type Keys<T> = T extends object ? (keyof T)[] : never;
// 使用示例
interface User {
id: number;
name: string;
isActive: boolean;
}
// 使用Keys工具类型获取User对象中的所有键
type UserKeys = Keys<User>; // 结果为 "id" | "name" | "isActive"[]
// 定义一个简单的工具类型,用于获取对象中所有的值类型
type Values<T> = T extends object ? (T[keyof T])[] : never;
// 使用示例
type UserValues = Values<User>; // 结果为 (number | string | boolean)[]
// 定义一个工具类型,用于创建一个新的类型,该类型具有原始类型的所有非函数属性
type OmitFunc<T> = { [P in keyof T as T[P] extends Function ? never : P]: T[P] };
// 使用示例
interface UserService {
user: User;
getUser(): User;
}
type UserServiceWithoutFunctions = OmitFunc<UserService>; // 结果为 { user: User }
这个代码示例展示了如何使用自定义工具类型来操作对象类型。Keys
工具类型获取对象的所有键,Values
工具类型获取对象的所有值类型,而OmitFunc
工具类型用于剔除对象中的函数属性。这些工具类型可以用于提高TypeScript类型操作的灵活性和重用性。
评论已关闭