Skip to content

Commit eff6779

Browse files
committed
refactor: create exception type
1 parent 2394199 commit eff6779

File tree

1 file changed

+8
-9
lines changed

1 file changed

+8
-9
lines changed

src/exception.ts

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,15 @@ type ExceptionStatic<TParams extends ExceptionParams, TOptions extends Exception
3636
Instance: BaseException<TParams, TOptions>;
3737
};
3838

39-
type ExceptionConstructor<
39+
type ExceptionConstructor<TParams extends ExceptionParams, TOptions extends ExceptionOptions> = new (
40+
...args: ExceptionConstructorArgs<TParams, TOptions>
41+
) => BaseException<TParams, TOptions>;
42+
43+
type ExceptionType<
4044
TParams extends ExceptionParams,
4145
TOptions extends ExceptionOptions,
4246
TStaticProps = unknown
43-
> = ExceptionStatic<TParams, TOptions> &
44-
TStaticProps &
45-
(new (...args: ExceptionConstructorArgs<TParams, TOptions>) => BaseException<TParams, TOptions>);
47+
> = ExceptionConstructor<TParams, TOptions> & ExceptionStatic<TParams, TOptions> & TStaticProps;
4648

4749
abstract class BaseException<TParams extends ExceptionParams, TOptions extends ExceptionOptions> extends Error {
4850
override cause: TOptions['cause'];
@@ -79,12 +81,9 @@ class ExceptionBuilder<
7981
}
8082

8183
build(): [TParams] extends [ExceptionParams]
82-
? SingleKeyMap<TParams['name'], ExceptionConstructor<NonNullable<TParams>, TOptions, TStaticMethods>>
84+
? SingleKeyMap<TParams['name'], ExceptionType<NonNullable<TParams>, TOptions, TStaticMethods>>
8385
: never;
84-
build(): SingleKeyMap<
85-
NonNullable<TParams>['name'],
86-
ExceptionConstructor<NonNullable<TParams>, TOptions, TStaticMethods>
87-
> {
86+
build(): SingleKeyMap<NonNullable<TParams>['name'], ExceptionType<NonNullable<TParams>, TOptions, TStaticMethods>> {
8887
if (!this.params) {
8988
throw new Error('Cannot build exception: params is undefined');
9089
}

0 commit comments

Comments
 (0)