kakasoo

타입만으로 클래스의 메서드를 한 번만 호출 가능하게 만들기 본문

프로그래밍/TypeScript

타입만으로 클래스의 메서드를 한 번만 호출 가능하게 만들기

카카수(kakasoo) 2023. 12. 3. 15:50
반응형
type SingletonizeMethod<T extends InstanceType<new (...params: any[]) => any>, ExcludeKeys extends keyof T> = {
  [key in keyof T as key extends ExcludeKeys ? never : key]: T[key]
}

type OmittedExcute = SingletonizeMethod<A<boolean>, 'execute'>;

class A<T extends boolean = false> {
    execute () : OmittedExcute {
    return new A<true>();
  }

  additional () : T extends true ? OmittedExcute : A<false> {
    return new A();
  }
}
반응형