Это хорошо или плохо, когда из числа получаем строку? Языки со строгой типизацией лучше?
Асинхронность языка это хорошо или нет? Я не программист, так для себя изучаю.

Автоматические преобразования типов, особенно в том виде, как они реализованы в JavaScript, являются источником трудно обнаруживаемых ошибок. В языках с сильной статической типизацией придётся писать преобразования типов явно, но и ошибок вида "3" + 5 там не будет.
Если тебе нужна безопасность кода (т. е. минимизация кол-ва ошибок в коде) - используй язык с максимально сильной статической типизацией (тот же Go, например). Если тебе нужна скорость написания кода - бери язык с динамической типизацией.
Асинхронность - это не хорошо и не плохо. Это просто свойство языка. Но, опять же, в разных языках асинхронность реализуется очень по-разному и JavaScript в этом совсем не эталон. В JS приходится использовать асинхронность даже там, где она логически не нужна.
Без капитана очевидности тут наверно не обойтись.
>> Это хорошо или плохо, когда из числа получаем строку?
когда на выходе нужна строка это хорошо
когда строка не нужна а нужно число это плохо
>> Языки со строгой типизацией лучше?
Если есть необходимость придерживаться строгих типов то языки со строгой типизацией лучше.
Если есть необходимость в динамическом изменении типов то языки со строгой типизацией хуже.
>> Асинхронность языка это хорошо или нет?
... ну в общим и целом ты наверно уже догадался. построил по аналогии так сказать.
Что можете сказать про Typescript или WebAssembly? Они могут быть альтернативой к JS?