프로그래밍/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();
}
}
반응형