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

# Interface: MessageClass\<TMessage>

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

A message class. Its static `NAME` must be the `$name` of its instances, so the bus can read which
message it is without constructing it.

## Example

```ts
class PlaceOrder extends Command {
  static NAME = '@my-org/orders/place-order'
  $name = PlaceOrder.NAME
  $version = 0
}
```

## Type Parameters

| Type Parameter | Default type |
| ------ | ------ |
| `TMessage` *extends* [`Message`](../classes/Message.md) | [`Message`](../classes/Message.md) |

## Constructors

### Constructor

```ts
new MessageClass(...args): TMessage;
```

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

#### Parameters

| Parameter | Type |
| ------ | ------ |
| ...`args` | `any`\[] |

#### Returns

`TMessage`

## Properties

| Property | Modifier | Type | Description | Defined in |
| ------ | ------ | ------ | ------ | ------ |
| <a id="property-name"></a> `NAME` | `readonly` | `string` | The `$name` of every instance of the class | [packages/bus-messages/src/message-declaration.ts:38](https://github.com/node-ts/bus/blob/2e6cf65c27833b707ae31ee623cfb6343770f434/packages/bus-messages/src/message-declaration.ts#L38) |
