> Aztec.nr API reference, v6.0.0 (mainnet and testnet). Index: https://docs.aztec.network/aztec-nr-api/v6.0.0/llms.txt

# Module typ

Module: `std::meta::typ`

Contains methods on the built-in `Type` type used for representing a type in the source program.

## Structs

- [ArrayType](/aztec-nr-api/v6.0.0/std/meta/typ/struct.ArrayType.md): An array type decomposed by [`Type::as_array`](/aztec-nr-api/v6.0.0/std/primitive.Type.md#as_array) into its element and length components.
- [DataType](/aztec-nr-api/v6.0.0/std/meta/typ/struct.DataType.md): A struct or enum type decomposed by [`Type::as_data_type`](/aztec-nr-api/v6.0.0/std/primitive.Type.md#as_data_type) into its [`TypeDefinition`](/aztec-nr-api/v6.0.0/std/primitive.TypeDefinition.md) and its concrete generic arguments.
- [IntegerType](/aztec-nr-api/v6.0.0/std/meta/typ/struct.IntegerType.md): An integer type decomposed by [`Type::as_integer`](/aztec-nr-api/v6.0.0/std/primitive.Type.md#as_integer) into its signedness and bit width.

## Functions

- [fresh_type_variable](/aztec-nr-api/v6.0.0/std/meta/typ/fn.fresh_type_variable.md): Creates and returns an unbound type variable. This is a special kind of type internal to type checking which will type check with any other type. When it is type checked against another type it will also be set to that type. For example, if `a` is a type variable and we have the type equality `(a, i32) = (u8, i32)`, the compiler will set `a` equal to `u8`.
