# 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.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.midio.com/midio-docs/reference/the-midio-language/data-type.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
