Имеет ли смысл автоматическое преобразование MSIL в JavaScript?

Вопрос о транспиляции MSIL в JavaScript

Я разрабатываю инструмент, который преобразует скомпилированный код C# или VB.NET (MSIL) в JavaScript. У меня уже есть несколько рабочих примеров, но некоторые типичные сценарии пока работают нестабильно.

Многие разработчики говорят мне, что не любят писать JavaScript код вручную, поэтому идея кажется востребованной. Однако я хочу узнать мнение сообщества.

Представьте, что такой продукт работает идеально:

  • JavaScript генерируется без ошибок в 100% случаев
  • Есть плагин для Visual Studio с проверкой корректности использования
  • Все возможности языка поддерживаются полностью

Вопросы:

  1. Стали бы вы или ваша компания использовать такое решение?
  2. Какие дополнительные функции, кроме прямого перевода кода, были бы интересны?
  3. Какие подводные камни вы видите в таком подходе?

Буду благодарен за любые мысли и предложения по этой теме.

По-моему такой подход имеет право на жизнь, особенно для команд где все привыкли к статической типизации. у нас в проекте часто бывает что фронтенд разработчики не хотят изучать джаваскрипт с нуля, а предпочитают работать в знакомой им среде.

Один момент только - производительность сгенерированного кода может хромать по сравнению с написанным вручную js. И дебагинг наверное будет болезненный, когда ошибка в браузере не соответствует исходному коду на c#. хотя если source maps нормально настроить, то может быть терпимо.

Звучит интересно, но меня смущает один момент - зачем вообще транспилировать уже скомпилированный MSIL? Не проще ли работать напрямую с исходниками C#? И как планируешь решать вопрос с библиотеками .NET Framework - там же куча специфичных для платформы вещей, которые в браузере просто не существуют?

Честно говоря, сомневаюсь в практичности такого решения. За 8 лет разработки видел много подобных попыток - от GWT до различных транспайлеров, и все они в итоге создавали больше проблем чем решали. Основная беда в том, что JavaScript и C# работают по совершенно разным принцыпам. Асинхронность, прототипное наследование, динамическая типизация - это все кардинально меняет подход к разработке. Плюс размер итогового бандла будет огромный из-за необходимости эмулировать .NET рантайм. Лучше потратить время на изучение нормального JS/TS, чем плодить костыли.