Verse ha un costrutto speciale che può essere utilizzato per ottenere il tipo di un'espressione arbitraria (simile a decltype nel moderno C++): type. Si può utilizzare ovunque sia possibile utilizzare un tipo. Ad esempio,
Foo() : int = 0
Bar(X : type{Foo()}) : type{Foo()} = XÈ particolarmente utile per descrivere i tipi di funzioni ed è necessario per indicare il tipo di risultato di una funzione come un'altra funzione con effetti diversi da quelli predefiniti. Ad esempio,
comparison := enum:
LT
EQ
GT
Less(X : int, Y : int)<decides> : int =
X < Y
Equal(X : t, Y:comparable where t:subtype(comparable))<decides> : t =
X = Y
Nel caso illustrato, l'espressione di confronto converte un'enumerazione di confronto nell'operazione di confronto a cui corrisponde ogni particolare valore dell'enumerazione. Questo esempio utilizza anche l'identificatore speciale _ che si può utilizzare nei type in cui ci si aspetta un identificatore senza dover fornire un nome altrimenti inutilizzato.