A foundational perspective -- types as constraints