Datatypes as initial algebras

I'm refining my understanding of the connection between initial algebras and datatypes. This paper suggests that one could even represent the categories corresponding to datatypes definitions: as follows: Where $$1$$ is the terminal object of the category.

My question is, how can I justify that $$1$$ is the terminal object of the category? Do I have to postulate that any type has a unique morphism to $$1$$? This morphisms would be different that the datatype definitions which would not be nice...

An empty product is the same thing as a terminal object by definition of the product: it's an object $$1$$ such that for every object $$A$$, there is a unique morphism $$1_A : A \rightarrow 1$$. ($$1$$ is a product of a family indexed by an empty set iff there exists an empty family of morphisms such that for every object $$A$$ and every empty family of morphisms, there is a morphism $$1_A : A \rightarrow 1$$ satisfying an empty family of properties.)
An empty product has a simple computational interpretation: it's a type with a single element. Haskell writes () for both the type and its value. ML calls the type unit and the value (). A function whose interpretation is $$1_A$$ is a constant function taking an object of type $$A$$ as its argument and returning the value () of type $$1$$. It's the only total function of this type.
Likewise an empty coproduct $$0$$ is an initial object: an object such as for every $$A$$ there is a unique morphism $$0_A : 0 \rightarrow A$$. The computational interpretation is an empty type. Writing a function whose denotation is $$0_A$$ is tricky: most programming languages don't allow it without using features that don't fit well in a simple categorical semantics such as exceptions or recursion.