diff --git a/test/types/main.ts b/test/types/main.ts index 40d3f4ba..ae1ccf97 100644 --- a/test/types/main.ts +++ b/test/types/main.ts @@ -237,6 +237,26 @@ subscription = node.createSubscription( (msg) => {} ); +// $ExpectType Subscription +subscription = node.createSubscription( + TYPE_CLASS, + TOPIC, + { isRaw: false }, + (message: rclnodejs.std_msgs.msg.String) => { + const receivedMessage = message; + } +); + +// $ExpectType Subscription receiving raw message +subscription = node.createSubscription( + TYPE_CLASS, + TOPIC, + { isRaw: true }, + (message: Buffer) => { + const receivedRawMessage = message; + } +); + // $ExpectType string subscription.topic; diff --git a/types/node.d.ts b/types/node.d.ts index 0a9cd130..fd3d3177 100644 --- a/types/node.d.ts +++ b/types/node.d.ts @@ -324,7 +324,7 @@ declare module 'rclnodejs' { typeClass: T, topic: string, options: Options, - callback: SubscriptionCallback + callback: SubscriptionCallback | SubscriptionWithRawMessageCallback ): Subscription; /** diff --git a/types/subscription.d.ts b/types/subscription.d.ts index 9e93be2c..a0a41c9b 100644 --- a/types/subscription.d.ts +++ b/types/subscription.d.ts @@ -13,7 +13,23 @@ declare module 'rclnodejs' { */ type SubscriptionCallback> = // * @param message - The published message - (message: MessageType | Buffer) => void; + (message: MessageType) => void; + + /** + * A callback for receiving published raw messages. + * + * @param message - The published message. + * + * @remarks + * See {@link Node#createSubscription | Node.createSubscription} + * See {@link SubscriptionContentFilter} + * See {@link Node#createPublisher | Node.createPublisher} + * See {@link Publisher} + * See {@link Subscription} + */ + type SubscriptionWithRawMessageCallback = + // * @param message - The published raw message + (message: Buffer) => void; /** * A ROS Subscription for published messages on a topic.