请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

keyof 的问题

老师你好!
keyof会获取类中的public属性跟原型上方法集合的联合类型,如果我只想单独获取到原型上方法的联合类型或者是属性的联合类型,需要怎么写呢?

正在回答 回答被采纳积分+3

1回答

keviny79 2021-10-14 09:21:02

//  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>


0 回复 有任何疑惑可以回复我~
  • 提问者 rookie_white #1
    老师,请问后面加了这个[keyof T]是什么意思?跟前面的怎么连着理解呢?
    回复 有任何疑惑可以回复我~ 2021-10-14 22:11:36
  • keviny79 回复 提问者 rookie_white #2
    [keyof T] 获取的是——冒号:后面  T[F] extends Function ? never : F  执行的结果组成的联合类型,明白?
    回复 有任何疑惑可以回复我~ 2021-10-14 23:27:03
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信