---
url: https://node-ts.github.io/bus/api/bus-messages/interfaces/MessageDefinition.md
---
[API reference](../../index.md) / [@node-ts/bus-messages](../index.md) / MessageDefinition

# Interface: MessageDefinition()\<TMessage, TData>

Defined in: [packages/bus-messages/src/message-declaration.ts:48](https://github.com/node-ts/bus/blob/2e6cf65c27833b707ae31ee623cfb6343770f434/packages/bus-messages/src/message-declaration.ts#L48)

A message declared with `defineCommand` or `defineEvent`: a function that creates the message from
its fields. Messages it creates, and messages of its type that are received, are plain objects.

## Example

```ts
const PlaceOrder = defineCommand('@my-org/orders/place-order')<{ orderId: string }>()
const placeOrder = PlaceOrder({ orderId: '1' })
```

## Type Parameters

| Type Parameter | Default type |
| ------ | ------ |
| `TMessage` *extends* [`Message`](../classes/Message.md) | [`Message`](../classes/Message.md) |
| `TData` *extends* `object` | [`MessageData`](../type-aliases/MessageData.md)<`TMessage`> |

```ts
MessageDefinition(...data): TMessage;
```

Defined in: [packages/bus-messages/src/message-declaration.ts:58](https://github.com/node-ts/bus/blob/2e6cf65c27833b707ae31ee623cfb6343770f434/packages/bus-messages/src/message-declaration.ts#L58)

Creates a message

## Parameters

| Parameter | Type | Description |
| ------ | ------ | ------ |
| ...`data` | `object` *extends* `TData` ? \[`TData`] : \[`TData`] | the fields of the message. They're copied, and `$name` and `$version` are added. It can be left out when the message has no required fields. |

## Returns

`TMessage`

the message

## Properties

| Property | Modifier | Type | Description | Defined in |
| ------ | ------ | ------ | ------ | ------ |
| <a id="property-name"></a> `NAME` | `readonly` | `TMessage`\[`"$name"`] | The `$name` of every message it creates | [packages/bus-messages/src/message-declaration.ts:63](https://github.com/node-ts/bus/blob/2e6cf65c27833b707ae31ee623cfb6343770f434/packages/bus-messages/src/message-declaration.ts#L63) |
