Все эти дни вынуждают машинопись. В нем так много поклонников и статей. Угловая команда делает свои рамки в TS. Но мой опыт миграции ES6 в TS был очень разочаровывающим.Является ли машинопись достаточно прочной?
Я попытался перенести нашу относительно новую кодовую базу (написанную в ES6) на Typcript в прошлом месяце и столкнулся с тонкой подводных камней!
Чтобы быть ясным, речь идет о приложении node.js с модульными модулями mocha и настройке ESLint (с использованием babel для пересылки).
Прежде всего, чтобы уполномочить проверку типов, я установил опцию noImplicitAny
, получил сотни ошибок и исправил их. Но после этого у меня возникли ошибки при наборе текста из-за того, что машинописный текст не понимает некоторые предварительно определенные модули node.js, например stream
(проблема на самом деле больше из-за отсутствия типирования для большого количества модулей).
После этого я установил typings
- рекомендуется замена для tsd
инструмент для управления библиотекой d.ts
файлов, но это node
определение набора текста, при решении stream
проблемы, добавил много ошибок, потому что он дублирует некоторые предопределенные типы.
Кроме того, я обнаружил, что машинопись на самом деле не скомпилирует многие функции ES6 в ES5, например, генераторы. Это заставило меня сделать сложный процесс сборки (TS -> (машинопись) ES6 -> (babel) ES5), а это значит, что мне приходится тратить свои исходные исходные карты.
Все вышеизложенное потребовалось много времени для настройки.
Итак, я смущен. Мне очень нравится идея машинописного текста, но реализация кажется мне такой грубой. Надеюсь, я ошибаюсь.
Может быть, кто-нибудь, кто использовал Typcript в реальном проекте, а не HelloWorld, мог бы объяснить мне, что я делаю неправильно?
Благодарим вас за ответ, @ Палео! У меня не было больших надежд на 'noImplicitAny', только что настроено было временно, чтобы реорганизовать мой код ES6 с определениями типов. Так что это не проблема. О узле v4-5 - он позволяет ES6 работать, но с ограничениями, такими как создание «строгого режима», необходимого для ключевого слова 'let' или что-то в этом роде. Кроме того, теперь невозможно использовать модули ES6 с чистым Node.js. Я что-то упустил? –
Узел 5 имеет флаги, которые не требуют строгих ограничений. Это флагов, которые я использую, чтобы заставить Node 5 работать правильно с TypScript '--use_strict --harmony --harmony_default_parameters --harmony_destructuring'. Хотя с выпуском Node 6 большая часть этого станет дефолтом. – ArcSine
@ Elessar.perm, так как TS 1.7, вы можете использовать опцию '--module' в сочетании с целевым' es6'. – Paleo