@@ -417,19 +417,36 @@ export class Container<Services = {}> {
417
417
* specifying these dependencies.
418
418
* @returns A new Container instance containing the newly created service, allowing for method chaining.
419
419
*/
420
- providesClass = <
420
+ providesClass <
421
421
Token extends TokenType ,
422
422
Tokens extends readonly ValidTokens < Services > [ ] ,
423
423
Class extends {
424
424
readonly dependencies : Tokens ;
425
- new ( ...args : Params ) : InstanceType < Class > ;
425
+ new ( ...args : Params ) : any ;
426
426
} ,
427
427
Params extends MapTokensToTypes < Services , Class [ "dependencies" ] > ,
428
428
> (
429
429
token : Token ,
430
430
cls : Class
431
- ) : Container < AddService < Services , Token , InstanceType < Class > > > =>
432
- this . providesService ( Injectable ( token , cls . dependencies , ( ...args : Params ) => new cls ( ...args ) ) ) ;
431
+ ) : Class extends {
432
+ readonly dependencies : Tokens ;
433
+ new ( ...args : Params ) : infer Service ;
434
+ }
435
+ ? Container < AddService < Services , Token , Service > >
436
+ : never ;
437
+
438
+ providesClass <
439
+ Service ,
440
+ Token extends TokenType ,
441
+ Tokens extends readonly ValidTokens < Services > [ ] ,
442
+ Class extends {
443
+ readonly dependencies : Tokens ;
444
+ new ( ...args : Params ) : Service ;
445
+ } ,
446
+ Params extends MapTokensToTypes < Services , Class [ "dependencies" ] > ,
447
+ > ( token : Token , cls : Class ) : Container < AddService < Services , Token , Service > > {
448
+ return this . providesService ( Injectable ( token , cls . dependencies , ( ...args : Params ) => new cls ( ...args ) ) ) ;
449
+ }
433
450
434
451
/**
435
452
* Registers a static value as a service in the container. This method is ideal for services that do not
0 commit comments