获得徽章 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
,搞个proxy搞半天都不行啊。一会405 一会400,挂梯子也解决不了。
![[打脸]](http://lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_82.c6f2aee.png)