实现一个 ts 的工具函数 GetOnlyFnProps<T> ,提取泛型类型 T 中字段类型是函数的工具函数,其中 T 属于一个对象。
// 答案
type GetOnlyFnKeys<T extends object> = {
[K in keyof T]: T[K] extends Function ? K : never
}[keyof T] // 不太理解这个地方
type GetOnlyFnProps<T extends object> = {
[K in GetOnlyFnKeys<T>]: T[K]
}
// 测试用例
// 除了函数类型,其他都删除了
type obj = {
a: () => string,
b: number
}
type ccc = GetOnlyFnProps<obj>
let value:ccc = {
a: () => '1'
}
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.