VisualStudio code релиз 1.6

Не сильно богатый релиз, но сам редактор достаточно хорош чтобы напомнить о нем. Попробуйте начиная изучать typescript поработать в нем. Или пописать в нем на JavaScript.

пишут что VisualStudio code имеет самую лучшую поддержку для тайпскрипта

Я пишу на typescript частично но использую WebStorm. Вопрос в том настолько ли лучше поддержка в VisualStudio code тайпскрипта чтобы стоило разбиратся с новым инструментом?

а какую IDE ты используешь?

Насчет поддкржки тайпскрипта:
Поддержка тайпскрипта в vs code реализована так же как и в atom или sublimetext (в вебшторме есть экспериментальная поддержка этого же подхода): через сервис, предоставляемый самим typescript пакетом. Разница в том как vs code и, например, саблайм, отображает эти результаты. В саблайме неудобнее читать про ошибки, и некоторые способы взаимодействия не так удобны. Например vscode показывает сигнатуру метода или интерфейс при наведении мышки, а в саблайме надо набирать комбинацию клавиш.

Поддержка не настолько лучше чтобы полностью менять инструмент и переходить с WS на VS code, но объективно лучше.

На рабочем проекте я использовал оба инструмента потому что в VS code скорость фидбека о том что ts код невалиден намного быстрее чем в вебшторме. В домашних в основном пользуюсь webstorm, изредка vs-code по той же причине: быстрый фидбек о корректности кода.

Спасибо за информацию.

Кстати, насколько ты оцениваешь пользу добавления typescript-а в ваш проект? Т.е. как соотносятся усилия для его добавления и дальнейшая поддержка (написания тайпингсов, интерфейсов и т.д.) с извлеченной пользой?

Я считаю что это был одно из лучших моих решений на проекте. Усилия при добавлении тратятся в основном на корректное написание интерфейсов в классах в начальных этапах перехода: когда переводишь один класс на ts, а он использует кучу других файлов проекта, и для них приходится писать файлы определения типов: d.ts-ки.

А вот пользы куча: мы избежали “тихих” проблем при мержах (когда структура файла меняется, но git не сигнализирует о конфликте строк), ушли проблемы “что-то там не может быть вызвано потому что undefined”, вопросы рефакторинга (в том числе рефакторинга тестов) решаются проще. Новые фичи писать проще, рефакторить проще, багов меньше, время разработки увеличивается.

Есть проблемы с поддержкой ts фич в вебшторме (в основном в плане удоства), но они легко нивелируются открытым VS code.

В ts я вижу достаточно много преимуществ чтобы использовать его в домашнем проекте. Намного проще рефакторить куски кода, которые между собой связаны интерфейсами без опасения отломать что-то (сегодня поменял базовый класс нескольких вьюх без шлейфа проблем после изменений).

2 лайка

Мне тоже уже удалось почувствовать удобство тайприскрипта.

Единственное что не нравится - так это

  1. отсутсвие тайпингсов к некоторым библиотекам/модулям - приходится писать самому (и тогда поддерживать) или же делать какие-то stub-ы
  2. иногда выпадают ts некоторые ошибки (по типам) которые приходится решать дольше чем писать саму фичу (т.е. можно написать any any any и проблема уйдет, но не хочется - зачем же тогда ts вообще). Но думаю что это из-за отсутсвия опыта.
  3. время время билда (транспайлинга + проверки типов) - значительно больше чем просто с babel-ем.

как вы решаете эти проблемы?

Пишем сами, поддерживаем.

Такого плана ошибки быстро решаются в vs code. Тоже сталкиваюсь с таким обстоятельством. Воспринимаю как необходимое зло. Всеми силами избешайте any, позже будет сложнее выковырять. Особенно когда переводите js в ts.

Аналогично. Инкрементальны билды с вебпаком более менее помогали, тем не менее время компиляции проекта продолжало расти. Я покинул проект, но если бы продолжал его вести, то пошел бы в сторону code-split, посмотрел бы в сторону альтернативных плагинов для компиляции ts. Готового ответа у меня сейчас нет.

1 лайк

Полезно послушать: в последнем выпуске RadioJs решь шла о тайприпте и Александр Майоров как раз рассказывал о проблеме №2 - ошибки в ts и сложности написания интерфейсов

1 лайк

Хотелось бы задать банальный вопрос, как настроить переходы по определениям в чистом JS проекте, уже неоднократно пробовал, ничего не получается.
Генерировал и создавал typing.json, jsconfig.js - “Go to definition” молчит, точнее в рамках одного файла только на переменных работает, по самим методам и тем более в другие файлы не переходит.