Скам и безопасность Виртуальная реальность

Переход от TypeScript: опыт масштабного проекта с 2.5 миллионами строк кода

Скам и безопасность Виртуальная реальность
Moving off of TypeScript, 2.5M lines of code

Разбор ключевых причин и преимуществ отказа от TypeScript в крупном монорепозитории с миллионами строк кода и перехода на C#, а также описание практических аспектов и инструментов, способствующих развитию масштабных проектов. .

За последние несколько лет язык программирования TypeScript завоевал огромную популярность и стал основой для множества крупных проектов благодаря своей типизации и возможности использовать его и на фронтенде, и на бэкенде. Один из таких проектов - крупный стартап Motion, который в течение почти пяти лет вел разработку в одном монорепозитории, содержащем около 2.5 миллионов строк кода. Несмотря на очевидные преимущества TypeScript, команда проекта столкнулась с рядом ограничений и вызовов, которые в итоге привели к решению отказаться от этого языка и перейти на C#. TypeScript стал ключевым фактором выживания Motion на ранних этапах.

Возможность быстро создавать прототипы, единая кодовая база для фронтенда и бэкенда, богатая экосистема и высокая скорость работы разработчиков сыграли большую роль в том, что компания смогла быстро валидировать гипотезы и несколько раз трансформировать свой продукт. Использование современных библиотек, таких как React для веба, React Native для мобильных приложений и Electron для десктопа, позволило обеспечить единообразный стек технологий. Для инфраструктурного кода также использовали TypeScript, что стало довольно необычным, но сработало в целом хорошо. Однако спустя время мечта о действительно полном обмене кодом между всеми платформами не оправдалась. Существовали проблемы с совместимостью React Native, из-за которых использовались другие версии React и TailwindCSS, что приводило к множеству конфликтов и проблем с синхронизацией разработки.

Часто при изменении общих библиотек мобильные разработки забывались, что провоцировало баги и массу времени тратилось на выявление виновников "кто сломал мобильное приложение". В итоге некоторые экраны на мобильных устройствах вообще пришлось переписывать, отказавшись от React Native из-за критичных требований к производительности. Возникли и технические ограничения самого TypeScript при работе с столь крупным кодом. Язык постепенно усложняется: Language Server часто аварийно завершал работу, а процесс CI занимал больше 20 минут, несмотря на оптимизации и использование масштабируемой системы сборки Turborepo от Vercel. Команда понимала, что решение многих проблем остается за разработчиками компилятора TypeScript и командами, работающими над такими инструментами, как Biome - проектом для статического анализа кода.

 

Одним из ключевых болевых мест стали ограничения в системе типов. Отсутствие нативной поддержки временных типов, необходимость в сторонних библиотеках вроде Zod, вызвали сложности и ложную иллюзию безопасности типов. Повышение версии Zod стало обязательным для успешной компиляции всего монорепозитория из-за ограничений компилятора - такой опыт демонстрирует, как некоторые фундаментальные аспекты экосистемы еще недостаточно зрелы для проектов огромного масштаба. Что касается работы с базами данных и ORM, с TypeScript было множество вызовов. Известные инструменты, такие как Prisma, порой ведут себя непредсказуемо и могут удалять целые таблицы по ошибке, если запрос составлен неверно.

 

Другие решения вроде Drizzle выглядели перспективно, но не имели стабильного API и достаточной зрелости. Для больших корпоративных решений подобная нестабильность неприемлема, ведь критически важна надежность и предсказуемость операций с данными. Сложившаяся ситуация заставила руководство задуматься о смене основы для разработки. В корпоративном мире давно доминируют языки с полным набором runtime-типов, надежными и быстрыми компиляторами, а также зрелыми инструментами для работы с базами. Яркими примерами служат Java и .

 

NET, которые проверены десятилетиями и обеспечивают стабильность и высокую производительность проектов с миллионами строк кода. Выбор языка для будущих разработок стал ключевым вопросом. Так как потребовалась поддержка кода, который мог бы выполнять произвольные JavaScript-блоки в изолированной среде по соображениям безопасности, руководство решило начать новый этап разработки на другом языке. Рассматривались варианты с требованием сбалансированности между производительностью, статической типизацией, сборкой мусора и общей продуктивностью практического использования. После анализа нескольких перспективных языков решающим стал выбор между C# и Java.

Критериями выступали зрелость экосистемы, богатство инструментальных средств и сходство синтаксиса с TypeScript. Несмотря на то, что у команды не было профессионального опыта с C#, именно этот язык был выбран из-за высокой продуктивности, выразительности и передовых возможностей, которые предоставляет платформа .NET. Одним из главных преимуществ стала надёжная и мощная ORM - Entity Framework Core. В отличии от трудозатратных и хрупких решений на TypeScript, EF Core позволял обрабатывать сложные сценарии, такие как soft delete, навигационные свойства и обработка конкурентных изменений практически без лишних усилий.

Автоматическое отслеживание изменений контекста значительно упрощало процесс работы с базой и минимизировало риски ошибок при транзакциях. Языковое сходство C# с TypeScript сыграло немаловажную роль. Оба разрабатывались с учетом современных парадигм программирования, имея схожий синтаксис с поддержкой async/await, лямбда-функций и nullable типов. Это облегчило адаптацию разработчиков и ускорило переход команды, сводя к минимуму время простоя и необходимость переподготовки. Экосистема C# и .

NET настолько обширна и разнообразна, что обеспечивает набор инструментов для любой задачи - от event sourcing и поддержки акторной модели до интеграции с продвинутыми системами обмена сообщениями. Несмотря на то что размер экосистемы не столь огромен, как у JavaScript, ее качество и зрелость обеспечивают комплексные решения с высокой надежностью в долгосрочной перспективе. Еще одним важным преимуществом стала тесная интеграция с современными инструментами искусственного интеллекта для автоматизации написания и проверки кода. Строгость компилятора C# и мощные API Roslyn дают возможность создавать и использовать сотни правил линтинга и проверок, которые способствуют написанию более качественного и поддерживаемого кода. Такие условия помогают AI-моделям безошибочно выполнять сложные задачи и конструировать бизнес-логику, что увеличивает общий темп разработки и улучшает качество конечного продукта.

Возвращаясь к экосистеме, важно отметить, что .NET перестал быть Windows-ориентированным решением. Современный .NET Core предлагает открытые, кроссплатформенные возможности, позволяя запускать приложения на Linux и MacOS с производительностью на уровне нативных решений. Это кардинально изменило восприятие технологии и сделало ее серьезным конкурентом в мире высоконагруженных и масштабируемых систем.

Отказ от TypeScript в пользу C# - не шаг назад, а логичный эволюционный этап для компании, столкнувшейся с ограничениями старой платформы при масштабировании. Возможности для эффективного управления большим объемом кода, стабильной работы с базами данных, качество инструментов и перспективы AI-инструментов обеспечивают новый уровень контроля и производительности. Переход такой крупной кодовой базы - сложный процесс, требующий тщательного планирования и вовлечения команды, но результаты показывают, что выбор более зрелых технологий для больших проектов позволяет сосредоточиться не на борьбе с внутренними ограничениями платформы, а на решении действительно бизнес-значимых задач. В итоге опыт компании Motion служит важным сигналом для разработчиков и технических лидеров: при росте и усложнении проектов настает момент, когда стоит пересмотреть технологический стэк и инвестировать в более устойчивые и продуктивные решения. TypeScript остается отличным инструментом, однако для проектов с огромными объемами кода современные "старые" языки с проверенными экосистемами и зрелыми инструментами оказываются более надежным выбором для долгосрочного успеха.

.

Автоматическая торговля на криптовалютных биржах

Далее
Whatssap
Вторник, 13 Январь 2026 Возможности и секреты WhatsApp: полный обзор популярного мессенджера

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

Not Buying American Anymore
Вторник, 13 Январь 2026 Почему я перестал покупать американские товары и что это значит для потребителей во всём мире

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

Microbial iron oxide respiration coupled to sulfide oxidation
Вторник, 13 Январь 2026 Микробное дыхание на оксидах железа в совокупности с окислением сульфида: новый взгляд на биогеохимию серы и железа

Раскрытие биологических механизмов взаимосвязи метаболизма микробов с окислением сульфида и восстановлением оксидов железа формирует фундаментальные знания о циклах элементов в анаэробных средах и их влиянии на экологическую динамику .

Show HN: Xiaoniao – Paste-as-Translation (Go and AI)
Вторник, 13 Январь 2026 Xiaoniao: Инновационный перевод в режиме реального времени с помощью Go и ИИ

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

BNB Price Jumps on Report Binance Is Nearing a DOJ Deal to End Compliance Monitoring
Вторник, 13 Январь 2026 Резкий рост цены BNB на фоне новостей о возможном завершении контроля со стороны Минюста США над Binance

Цена криптовалюты BNB выросла почти на 3% после сообщений о переговорах Binance с Министерством юстиции США о возможном снятии требований по внешнему мониторингу, установленным по итогам крупного урегулирования. Это событие привлекло внимание к торговой платформе и может изменить ландшафт регулирования в криптоиндустрии.

HBAR Retreats Amid Constrained Range Trading and Diminishing Volumes
Вторник, 13 Январь 2026 HBAR: Текущие Тенденции и Перспективы на Фоне Ограниченного Диапазона Торговли и Снижения Объемов

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

The Protocol: ETH Exit Queue Gridlocks As Validators Pile Up
Вторник, 13 Январь 2026 Стагнация в очереди выхода валидаторов Ethereum: что происходит и к чему это приведет

Увеличение количества валидаторов, ожидающих выхода из сети Ethereum, создает серьёзные задержки, влияя на стабильность и перспективы экосистемы. Анализ причин, влияния на staking и перспективы развития эфириума на фоне грядущих изменений.