Sirve para declarar un tipo de datos. Una declaración completa de tipo (full_type_declaration) declara el nombre del tipo y lo define, describiendo sus características. Una declaración incompleta de tipo (incomplete_type_declaration) introduce un nombre de tipo cuya definición se hará más adelante.
type_declaration ::= full_type_declaration | incomplete_type_declaration | private_type_declaration | private_extension_declaration full_type_declaration ::= type defining_identifier [known_discriminant_part] is type_definition; | task_type_declaration | protected_type_declaration type_definition ::= enumeration_type_definition | integer_type_definition | real_type_definition | array_type_definition | record_type_definition | access_type_definition | derived_type_definition | interface_type_definition