Define types with optional constraints