feature(microservices): Return correct client type in ClientProxyFactory #2240
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
PR Checklist
Please check if your PR fulfills the following requirements:
PR Type
What kind of change does this PR introduce?
What is the current behavior?
At the moment
ClientProxyFactory.create
will always return the typeClientProxy & Closeable
. Therefore it will not take the giventransport
option into consideration, even though we would know what type should be returned.On top of that
ClientProxy & Closeable
is straight up wrong with some clients, such as theGrpcClient
.Calling
.connect()
fromClientProxy & Closeable
onClientGrpc
would result in this error:Error: The "connect()" method is not supported in gRPC mode.
What is the new behavior?
Adds overloads to the
ClientProxyFactory
for better type security.This allows the user to not cast the client to any after creating it
using the factory.
Does this PR introduce a breaking change?
Other information
The
ClientProxyFactory
is used in@nestjs/terminus
to dynamically create a microservice client on the fly. Better type security would lead to a better code :)