extract method type from class

YOUNGJOO-YOON·2022년 3월 11일
0

typeScript

목록 보기
63/65
type ReturnedActions<T> = {
    [P in keyof T]: T[P] extends (...a: any) => infer R ? {
        type: P,
        payload: R
    } : never
}[keyof T]

type AllActions = ReturnedActions<Actions>

Playground link

Edit If Actions only contains functions, you can also use the distributive nature of ReturnType to get the return type of all functions in Actions:

type AllActions = ReturnType<Actions[keyof Actions]>;
type ReturnedActions<T> = {
  // eslint-disable-next-line no-unused-vars
  [P in keyof T]: T[P] extends (...args: any) => infer R ? {
    type:P,
    payload:R
  }:never
}[keyof T]

class Test {
  constructor(){}

  hello():void{
    console.log('hello')
  }
  num():number{
    return 1
  }
}

type TestAction = ReturnType<Test[keyof Test]>
type Ret = ReturnedActions<Test>


class Drill {
  constructor() {}

  consoleHi(): string {
    return 'Hi';
  }
}

type DrillAction = ReturnType<Drill[keyof Drill]>;
profile
이 블로그의 글은 제 생각을 정리한 글과 인터넷 어딘가에서 배운 것을 정리한 글입니다. 출처는 되도록 남기도록 하겠습니다. 수정 및 건의 오류 등이 있으면 언제든지 댓글 부탁드립니다.

0개의 댓글