Необходимо использовать базовый класс, если действительно нет никакой причины для других разработчиков требовать использовать их собственный базовый класс в дополнение к участникам типа , и Вы предвидите проблемы управления версиями (см. http://haacked.com/archive/2008/02/21/versioning-issues-with-abstract-base-classes-and-interfaces.aspx ).
, Если у наследовавшихся разработчиков есть какая-либо причина использовать их собственный базовый класс для реализации интерфейса типа и Вы не видите, что интерфейсное изменяется, затем пойдите с интерфейсом. В этом случае можно все еще добавить базовый класс по умолчанию, который реализует интерфейс ради удобства.
['','+'][+(num > 0)] + num
или
['','+'][Number(num > 0)] + num
Это - более короткая форма, чем тернарный оператор, на основе кастинга булевской переменной к номеру 0 или 1 и использованию его как индекс массива с префиксами, для числа, больше, чем 0, префикс '+' используется