> For the complete documentation index, see [llms.txt](https://docs.midio.com/midio-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.midio.com/midio-docs/reference/the-midio-language/data-type.md).

# Data type

Midio supports a variety of data types that allow you to work with different kinds of information. These data types include:

* **Number**: Represents both integers and floating-point values.
* **String**: Represents a sequence of characters.
* **Boolean**: Represents a true or false value.
* **Null**: Represents a lack of value
* **Array**: Represents an ordered collection of elements, which can be of any data type.
* **Object**: Represents a collection of key-value pairs, where keys are strings and values can be of any data type.
* **Buffer**: An efficient representation of binary data as a sequence of bytes.
* **Opaque**: A type used to hide a native value, used by certain native functions to manage native data types.

## Static type checking

Although it is still rudimentary, Midio does have a (gradual) static type system. It is not yet possible to declare your own types in the editor, but you can assign types to your functions inputs and outputs.

<figure><img src="/files/ORkCjBXLt3UvMPVzohIk" alt=""><figcaption></figcaption></figure>

We plan on expanding the capabilities of our type system in the future, allowing for more advanced types as well as the ability to define your own.
