# Type Classes

Type classes represent categories of type. Each type class is assigned a range of possible ids, and each instantiation of a type class (a Type), has an id within that range.

Builtin Type Classes:

* [ArrayType](./array-type)
* [HashMapType](./hash-map-type)
* [HashSetType](./hash-set-type)
* [ObjectType](./object-type)
* [PrimitiveType](./primitive-type)
* [ReferenceType](./reference-type)
* [StringType](./string-type)
* [StructType](./struct-type)
* [EnumType](./enum-type)
* [UnionType](./union-type)
