-
Notifications
You must be signed in to change notification settings - Fork 85
Add README for typescript demos for indexing #1276
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from 1 commit
Commits
Show all changes
2 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,67 @@ | ||
| # TypeScript Demos | ||
|
|
||
| This directory contains TypeScript demonstrations showcasing rclnodejs functionality with full type safety and modern development practices. Each demo illustrates core ROS2 communication patterns using TypeScript interfaces and best practices. | ||
|
|
||
| ## 📂 Available Demos | ||
|
|
||
| ### 📨 **[topics/](./topics/)** - Publisher/Subscriber Pattern | ||
|
|
||
| Basic ROS2 topic communication with TypeScript type safety | ||
|
|
||
| - **Publisher**: Sends timestamped string messages at regular intervals | ||
| - **Subscriber**: Receives and displays messages with colorful console output | ||
| - **Features**: Message counting, error handling, graceful shutdown | ||
|
|
||
| ### 🔧 **[services/](./services/)** - Request/Response Pattern | ||
|
|
||
| Synchronous service calls for immediate responses | ||
|
|
||
| - **Service Server**: Provides AddTwoInts service for integer addition | ||
| - **Service Client**: Makes requests with random numbers at intervals | ||
| - **Features**: Service discovery, request counting, comprehensive error handling | ||
|
|
||
| ### ⚡ **[actions/](./actions/)** - Long-Running Task Pattern | ||
|
|
||
| Asynchronous actions with progress feedback and cancellation | ||
|
|
||
| - **Action Server**: Calculates Fibonacci sequences with progress updates | ||
| - **Action Client**: Sends goals, monitors progress, handles results | ||
| - **Features**: Goal cancellation, feedback processing, result handling | ||
|
|
||
| ## 📊 Complexity Progression | ||
|
|
||
| ## ️ TypeScript Features | ||
|
||
|
|
||
| ### Type Safety | ||
|
|
||
| - **Full typing** for all ROS2 messages, services, and actions | ||
| - **Compile-time validation** of message structures | ||
| - **IntelliSense support** in VS Code and other TypeScript editors | ||
|
|
||
| ### Modern Development | ||
|
|
||
| - **ES2020+ syntax** with async/await patterns | ||
| - **Modular architecture** with clean separation of concerns | ||
| - **Error boundaries** with comprehensive exception handling | ||
| - **Graceful shutdown** handling for SIGINT/SIGTERM | ||
|
|
||
| ### Code Quality | ||
|
|
||
| - **Consistent formatting** with prettier/eslint configurations | ||
| - **Build validation** with TypeScript strict mode | ||
| - **Runtime safety** with proper error handling patterns | ||
|
|
||
| ## 📊 Complexity Progression | ||
|
|
||
| | Demo | Complexity | Communication | Best For | | ||
| | ------------ | ----------------- | ------------- | ---------------------- | | ||
| | **topics** | ⭐ Basic | Pub/Sub | Learning fundamentals | | ||
| | **services** | ⭐⭐ Intermediate | Req/Response | Synchronous operations | | ||
| | **actions** | ⭐⭐⭐ Advanced | Goal-oriented | Long-running tasks | | ||
|
|
||
| ## 🔗 Related Resources | ||
|
|
||
| - [rclnodejs Tutorials](../tutorials/) - Comprehensive API documentation | ||
| - [Electron Demos](../electron_demo/) - GUI applications with rclnodejs | ||
| - [TypeScript Handbook](https://www.typescriptlang.org/docs/) - Language reference | ||
| - [ROS2 Documentation](https://docs.ros.org/) - Official ROS2 concepts | ||
Oops, something went wrong.
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There are two '## 📊 Complexity Progression' headings (lines 31 and 54). The first one on line 31 appears to be incomplete with no content, while the second one has the actual table. Remove the duplicate heading on line 31.