Это системный вопрос типа, поэтому любой, кто отвечает на «0», упускает суть.
Вы говорите о типе суммы (отметьте «Типы и языки программирования»).
То есть тип, имеющий n + 1 жителей. То есть тип, чьи элементы являются:
- все значения типа, который вам небезразличен
OR
- дополнительное значение, ничего.
Это легко описать как алгебраический тип данных, например, в Хаскеле
data Maybe a = Just a | Nothing
Как ни странно, относительно немногие языки поддерживают типы сумм, поэтому они кодируют их как продукты (пара тегов Just или Nothing и само значение) или перегружая одного из жителей типа (например, -1 или 0 становится Ничего).
Этот тип обычно известен как Возможно или Необязательно.