My impression is that the common way is to use object construction syntax, but hide it from most code by wrapping it in an `initMyType` or `newMyType` proc.
This wrapping is useful because you may want to do more in the "constructor" later (for example, set some values to defaults depending on other `initMyType`/`newMyType` arguments) and don't want to change all your object initializations.