
获得徽章 9
typescript小知识:
keyof 获取一个类型中的所有可访问的key值
Extract<T,B> 获取 T 类型中指定的 B 的key 的新类型
A extends B A类型是B类型的子类型
never 表示不存在的类型 比如 string & number => never
由此可得: 我们想从一个类中获取这个类型指定value的类型集合就有如下操作
type PickTypeIs<T, Type> = keyof {
[P in keyof T as Extract<P, T[P] extends Type ? P : never>]: T[P]
};
// 一个function的key值集合
interface User {
name:string
age:number
getName():string
getAge():number
}
type fnKeys = PickTypeIs<User ,Function> ==> "getName"|"getAge"
type stringKeys = PickTypeIs<User ,string> ==> "name"
keyof 获取一个类型中的所有可访问的key值
Extract<T,B> 获取 T 类型中指定的 B 的key 的新类型
A extends B A类型是B类型的子类型
never 表示不存在的类型 比如 string & number => never
由此可得: 我们想从一个类中获取这个类型指定value的类型集合就有如下操作
type PickTypeIs<T, Type> = keyof {
[P in keyof T as Extract<P, T[P] extends Type ? P : never>]: T[P]
};
// 一个function的key值集合
interface User {
name:string
age:number
getName():string
getAge():number
}
type fnKeys = PickTypeIs<User ,Function> ==> "getName"|"getAge"
type stringKeys = PickTypeIs<User ,string> ==> "name"
展开

评论
1