EVZ>>>JS не поддерживает никаких методов и свойств для определения текущего или изначального значения, поэтому нужно внимательно отслеживать типы в процессе, во избежании неожиданных результатов, или же задавать значения по умочанию (инициализировать).
IT>>JS не правильный язык.
По сравнению с "серьезными" языками — да.
А вообще, даже во всех справочниках по JS пишут, что в этом языке тип переменной модифицируется, в зависимости от того, что с ней делаешь; поэтому еще один вариант, это ставить проверки на правильность введенного типа. Или же делать switch'и и т.д.