keyof 的问题
来源:8-13 【 TS 泛型类约束】 Vue3源码中的T extends object + extends keyof 【 Vue3源码应用】 1

rookie_white
2021-10-13
老师你好!
keyof会获取类中的public属性跟原型上方法集合的联合类型,如果我只想单独获取到原型上方法的联合类型或者是属性的联合类型,需要怎么写呢?
写回答
1回答
-
keviny79
2021-10-14
// 1.准备一个类
class Customer {
custname!: string
age!: number
buy() {
}
eat() {
}
}
// 2 实现//TS 原型上都是类上定义的方法,屏蔽了单独使用原型定义属性和方法
// TS 属性都属于实例
// 2.1. 获取属性名组成的联合类型
type TypPropNameUnion<T> = {
[F in keyof T]: T[F] extends Function ? never : F
}[keyof T]
type PropName = TypPropNameUnion<Customer>
// 2.2 TS 原型上都是类上定义的方法名组成的联合类型
type TypMethodNameUnion<T> = {
[F in keyof T]: T[F] extends Function ? F : never
}[keyof T]
type MethodName = TypMethodNameUnion<Customer>
022021-10-14
相似问题