[WIP] Support Observable return types for Nestia SDK
Thanks for assigning this issue to me. I'm starting to work on it and will keep this PR's description up to date as I form a plan and make progress.
Original issue description:
Feature Request
When using the Nestia Client SDK, it can properly infer the controller method return value types when returning synchronously or returning a Promise. However, if we try to return an Observable, then the SDK is not able to generate types properly.
Since NestJS has first-class support for Observables, many times we work with Observables exclusively and would just like to return the Observable from the controller method instead of converting it to a Promise and then returning the Promise. However, returning an Observable type breaks Nestia's ability to properly type the response type.
Workaround's we need to use today:
- Use async / await and only work with Promises
- Use the
firstValueFromrxjs operator to convert Observable to Promise before returning the response from the controller.This works fine:
@TypedRoute.Get('user/:id') async getUser(@Param('id') id: string): Promise<User> { return firstValueFrom(this.userService.findById(id)); }This does not:
@TypedRoute.Get('user/:id') getUser(@Param('id') id: string): Observable<User> { return this.userService.findById(id); }
Fixes #747.
💬 Share your feedback on Copilot coding agent for the chance to win a $200 gift card! Click here to start the survey.