feat: generic action type #1454
Closed
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.


Description
Checklist
Update index.md)develop)npm run prettier:checkpassesnpm run lint:checkpassesGeneric Action Interface in routing-controllers
Introduction
The
routing-controllerslibrary has introduced a genericActioninterface to provide better type safety and flexibility when working with different web frameworks or custom request/response types.Why We Need Generic Action Types
Type Safety: Generic types allow for stronger type checking, reducing runtime errors and improving code quality.
Framework Flexibility: Different web frameworks (e.g., Express, Koa) have different request and response object structures. Generic types allow us to adapt to these differences easily.
Custom Types: Projects often extend or modify standard request/response objects. Generics enable the use of these custom types without losing type information.
Better IntelliSense: IDE autocompletion and suggestions become more accurate when using properly typed actions.
Code Readability: Explicit typing makes the code more self-documenting and easier to understand.
The New Action Interface
Generic Parameters
TRequest: Type of the request object (default:any)TResponse: Type of the response object (default:any)TContext: Type of the context object (for Koa-specific usage, default:any)TNext: Type of the next function (default:Function)Usage Example
Benefits
Conclusion
The introduction of generic types to the
Actioninterface inrouting-controllerssignificantly enhances the library's flexibility and type safety. It allows developers to write more robust and maintainable code while adapting to various frameworks and custom type definitions.