Строгая типизация возвращаемых значений функцией?
Это холивар на тему "языки со статической типизацией vs языки с динамической типизацией"
Каждая сторона может привести кучу значимых аргументов в свою пользу.
Если проект очень сложный/очень ответственный - все должно быть строго, иначе нахлебаетесь.
Для простых - лучше гибче, без лишней строгости. Разработка будет быстрее, дешевле.
должна ли функция в JS возвращать один тип данных?
да
1. Это прозрачно, понятно и предсказуемо.
2. Это может в некоторой степени улучшить производительность.