Интервью с разработчиками на TypeScript

в 6:58, , рубрики: coffeescript, javascript, jquery, TypeScript, Visual Studio

TypeScript — это относительно новый язык программирования, который компилируется в JavaScript. Его основные преимущества — это классы и проверка типов на этапе компиляции. Компилятор TypeScript — с открытым исходным кодом, а разработка спонсируется Microsoft.

Однако, и язык, и компилятор все ещё молоды и опыт его применения в реальных проектах мало у кого есть. Самому же очень редко выпадает шанс попробовать новое средство разработки на реальном проекте: слишком велики риски провала и большинство заказчиков не пойдет на это.

Тем приятнее встретить людей, которым довелось проверить его в “боевых” условиях. У меня получилось побеседовать с двумя ребятами, сделавшими редактор отчетов на TypeScript.

Интервью с разработчиками на TypeScript

Кто вы? Представьтесь.

Михаил: Здравствуйте! Меня зовут Михаил. Я работаю в DX (тульском офисе Developer Express Inc. — прим. интервьювера) уже 14 лет. Начинал я с Delphi (VCL), потом был C# (ExpressAppFramework) и вот уже 3 года я активно пишу на JavaScript/TypeScript. Cначала в команде DevExtreme, где я был одним из тим-лидеров, а с прошлого года я занимаюсь разработкой Web Report Designer.

Сергей: Меня зовут Сергей. Я преподавал в Тульском госуниверситете, работал в ИТ-подразделениях крупных комнаний, сейчас уже почти 6 лет работаю в DX. Начинал с C/C++ (MS Visual Studio, C++ Builder), в DX работал над проектом ExpressAppFramework, потом в команде DevExtreme, а сейчас занимаюсь HTML дизайнером для XtraReports Suite.

Кто в вашей команде? Как они появились?

Михаил: В самом начале наша команда состояла из меня, еще одного разработчика из DevExtreme и разработчика из команды Reports. Надо сказать, что исторически DX сильна в основном своими VCL, .NET и ASP.NET компонентами. Но мы с оптимизмом смотрим в будущее и не хотим отстать от поезда современного программирования, которым сейчас, безусловно, является HTML5 и всё, что с ним связано. Но, опять таки, оговорюсь, в основном у нас работают C# программисты. Сейчас мы хотим немного изменить этот дисбаланс.

Сергей: Я и есть “еще один разработчик из DevExtreme” :) Занимался там дизайнером форм, интеграцией с Visual Studio и PhoneGap контейнерами для нашего фреймворка.

Как решили использовать TypeScript?

Михаил: Про TypeScript я услышал на конференции РИТ++ 2012. Тогда это была одна из первых версий. Прямо скажем, это было сыровато и не было многих вещей, которые появились в следующих версиях. Но тем не менее, я пробовал его в небольших сэндбокс проектах и то, что получалось, мне нравилось.

Сергей: Фреймворк DevExtreme написан на JavaScript и шаблоны проектов для MS Visual Studio сначала также были только JavaScript-овые. Но в 2013 году некоторые наши пользователи стали просить сделать файлы определений .d.ts для нашего фреймворка и TypeScript-овые шаблоны проектов. Мы поддержали TypeScript и получили строгую типизацию и интеллисенс, что здорово помогло нашим клиентам при “вхождении” во фреймворк. Нам понравилось, как выглядел код в клиентских проектах. После этого нам самим захотелось использовать TypeScript.

Интервью с разработчиками на TypeScript

Почему не использовали другие решения: CoffeeScript, например?

Михаил: Основными причинами по которым мы выбрали TypeScript были:

  1. Близкий к C# синтаксис.
  2. Хорошая интеграция с Visual Studio. Это скорее сугубо наше преимущество, так как я отмечал выше, все мы C# программисты, а это автоматически означает, что руки у нас заточены под «вижуалку».
  3. Многие вещи, присутствующие в языке, в скором времени войдут или уже вошли в EcmaScript6. JS-код после компиляции получается очень похожим на то, что было в TypeScript коде (Небольшой обзор нововведений: https://github.com/lukehoban/es6features — прим. интвервьювера).
  4. Достаточно гибкая система типизации и полная совместимость с JavaScript. Иными словами, можно выбирать, какая часть системы будет типизированной, а какая нет — и это позволяет делать очень гибкие решения, не доступные в том же C#.
  5. Microsoft stack.

Касаемо CoffeeScript. По тому, что я видел, это неплохая альтернатива TypeScript. Но сейчас у CoffeeScript я не вижу значительных преимуществ по сравнению с ним. И если базу кода TypeScript можно будет легко конвертнуть в EcmaScript 6, то сделать то же с CoffeScript проектом, я считаю, будет сделать намного сложнее.

Сергей: Я сначала скептически относился ко всем оберткам вокруг JavaScript. Для меня TypeScript показался более легким при вхождении. Возможно за счет близости синтаксиса к C#, возможности использования фрагментов кода JavaScript в TypeScript коде, близости результата трансляции к исходному тексту программы, что позволяет отлаживаться даже без map-файлов, если ваш код используется в каком-то другом месте. И, конечно же, типизация, интеллисенс и быстрые переходы по коду помогают в работе с большим проектом.

Правильно-ли я понял, что вы рассматриваете возможность отказаться от TypeScript с выходом и повсеместной реализацией стандарта EcmaScript6?

Сергей: Думаю, что существующие проекты переписывать смысла нет, а вот новый проект начать сразу на JavaScript EcmaScript6, если Visual Studio даст интеллисенс и проверку типов в редакторе — почему бы и нет. Я уже привык к этим плюшкам и отказываться не хочу.

Какая польза для вас, что TypeScript интегрирован в стек средств разработки Microsoft?

Михаил: Наши клиенты — это в основном разработчики, “сидящие” на Microsoft стеке. И если они и будут что-то использовать, то это вещь, которую рекомендует и продвигает Microsoft а ей без условно является TypeScript и нам надо было попробовать его, чтобы лучше понимать наших клиентов.

Сергей: Легко начать использовать TypeScript — он ставится даже на Visual Studio Express Edition. Ты просто добавляешь TypeScript файл в проект, и пишешь — больше ничего настраивать не надо. Ради интереса прикрутил TypeScript к Sublime — можно и так работать.

Какие трудности пришлось преодолеть?

Михаил: На самом деле, больших сложностей именно с TypeScript мы не испытывали. Возможно, только по началу, пока разрабатывали структуру проекта (что, где и как должно лежать). Но это из-за принципа: все когда-то происходит впервые.

Сергей: Пару недель привыкал к синтаксису TypeScript: руки набирали либо JavaScript, либо C# код.

Как отлаживаете и профилируете приложение?

Михаил: В деле отладки мы использовали композитный подход. А именно верстку — в основном, смотрели в Chrome, так как удобно. Там же и отлаживались. Благодаря map файлам всё происходит очень органично и не замечаешь того, что работаешь с TypeScript, а не JavaScript. Единственное, что иногда есть проблемы с обновлением исходников. Приходится чаще сохранять, чтобы код перегенерился. К чести Microsoft можно отнести очень быстрый компилятор начиная с версии 0.9.

Сергей: Приложение отлаживаем в Chrome, тесты, как мне кажется, удобнее отлаживать в IE + VisualStudio: можно вернулься на любую строчку назад или перескочить на пару строк вперед. Хотя в хроме тоже можно скоп перезапустить. При отладке в Chrome иногда map-файлы не поднимаются (иногда как раз в тот момент когда они больше всего нужны), но за счет читаемости результирующего JavaScript кода особых проблем это не создает.

Как тестируете код? Пишете тесты?

Михаил: У нас в компании TDD является обязательной методологией разработки кода. Поэтому все писалось по Test First-методологии, и надо отдать должное Knockout — очень помогает в этом вопросе. Т.е. сначала пишется верстка потом получаются биндинги которые определяют интерфейс вью модели. Далее мы пишем тесты на эту вью модель. Как-то так если вкратце. В качестве фреймворка для юнит-тестирования… Тут никаких сюрпризов: мы использовали QUnit. Continuous Integration у нас (куда ж без велосипедов) в DX свой, но с ним тоже не было проблем.

Сергей: QUnit + “qunit.TypeScript.DefinitelyTyped”

Используете какие-то расширения для Visual Studio?

Михаил: Мы использовали Web Essentials, который, как мне кажется, стандарт де-факто для тех, кто пишет что-то под HTML5, JavaScript.

Используете фреймворки? Как они интегрируются с TypeScript?

Михаил: Но куда же без jQuery :) Да, конечно, мы использовали ряд сторонних библиотек TS, описания которых без проблем можно найти в Nuget Packages Manager по ключевику TypeScript.DefinitelyTyped.

Сергей: Knockout.js, Globalize, WebApp.js. Определения для соронних библиотек, которых нет в галерее Visual Studio, как правило, можно найти на GitHub. Например, определения распространенных контролов (типа select2 и ему подобных) там уже есть. Если уж и там не нашел, то достаточно легко написать себе нужный d.ts файл или, если совсем лень, то прикастить к .

Как делали локализацию продукта?

Сергей: Использовали “Globalize.js”: добавили в проект nuget пакет “globalize.TypeScript.DefinitelyTyped” — и все.

Какие советы можете дать тем, кто решит написать проект на TypeScript?

Михаил: Пишите. Вам понравится.

Сергей: Пробуйте, сравнивайте. В сети есть ответы практически на все вопросы.

Автор: ivann

Источник


  1. Artem:

    Возможна ли разработка серьезного проекта на Typescript без VisualStudio и вообще Windows.?
    Если кто-то уже пытался/работает в таких условиях – какие основные трудности возникли?

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js