Primitive types

boolean

True or False

integer

Arbitrary sized integer (there is no underflow or overflow).

string

UTF8 encoded binaries
The use case for strings is extremely narrow in Aiken and on-chain code, they are only used for tracing, a bit like labels attached to specific execution paths of your program. Most of the time, you probably want to use a ByteArray instead and only resort to String for debugging.

byte arrays

data

void

These are built in the language and can be typed as literals

Base building blocks

list

tuple

For associating types together