3 ответов:
Я боюсь это будет очень проблематично. TypeScript-это надмножество JavaScript. Это означает, что весь допустимый код JavaScript также является допустимым кодом TypeScript. Что просто неправильно. Следующий код является правильным в JavaScript, но создает ошибку в TypeScript:
var data={x:5, y:6}; data.z=5;вы можете получить динамическое поведение JavaScript, объявив данные как "окружающий"
var data:any={x:5, y:6}; data.z=5;теперь это будет работать и в TypeScript. Тем не менее, вы можете изменить расширение А.JS-файла для .ts и передать этот файл в компилятор TypeScript. Это действительно смутило меня, и я задал вопрос в канале IRC TypeScript на freenode. Оказалось, что компилятор Typescript проверяет свои входные данные на допустимый JavaScript и просто ничего не делает, если что-то находит. Интуитивно это звучит хорошо. Вы должны быть в состоянии "конвертировать" все ваши JavaScript в Typescript, просто обновив расширения файлов и быть хорошо идти. К сожалению, это не работает, как ожидалось. Предположим, у вас есть этот код:
var func=function(n){alert(n)}; var data={x:5}; data.z=6;изменить: Я просто попытался скомпилировать это, и это не работает. Извините, я, кажется, ошибся: компилятор TypeScript даже не принимает чистый JavaScript. Я постараюсь выяснить, что пошло не так.
вы изменили расширение файла .ts и использовать функцию func в другом коде. Сначала все кажется прекрасным, но затем появляется уродливый баг. Вы решаете, что некоторая статическая проверка типа будет вероятно, поможет вам, и вы измените код:
var func=function(n:string){alert(n)}; var data={x:5}; data.z=6;но теперь это больше не является допустимым кодом JavaScript и заставит компилятор генерировать много сообщений об ошибках. Ведь данные не имеют члена "z". ... Такого поведения можно было бы избежать, если бы тип по умолчанию всегда был "любым", но тогда вывод типа был бы совершенно бесполезен.
так как же вы решаете эту проблему ? Ответ: файлы объявлений. Вы можете использовать свой код JavaScript "как есть" в проект и все еще получить статическую проверку типа с помощью нескольких .д.TS файлов. Они сообщают компилятору, какие переменные, методы и" классы " объявлены в файле JavaScript, включая их типы. Поэтому они позволяют проверять тип во время компиляции и фантастический intellisense. Один.D. TS файл для моего примера будет
declare var data:any; declare function func(n:string);сохраните это как " myjsfile.d. ts" и импортировать его в typescript с помощью
///<reference path="myjsfile.d.ts"/>обязательно включите скрипт JavaScript в свой html-файл выше скомпилированный машинописный текст. Вот это интересная ссылка. Вас может заинтересовать раздел "превращение JavaScript в TypeScript".
обновление: инструмент подробно описан в этом посте
ReSharper начиная с версии 9 (EAP строит доступные) имеет функциональность для автоматического преобразования кода JavaScript в TypeScript. Вы можете начать с переименования .файл JS в .ts и см. R# предложения, подобные этому:
не пробовал его на реальных примерах. Но он способен конвертировать большое количество шаблонов JavaScript.
из терминала (mac):
for f in *.js; do mv $f `basename $f .js`.ts; done;переименовывает все .js файлы к.ТС
это несколько насмешливо - но, как указывает Бенджамин выше JavaScript файлы допустимы TypeScript. Если вы хотите добавить типы, классы, интерфейсы и т. д. В свой JavaScript-вам самому нужно будет разработка и изменение кода с использованием этих понятий - для этого мало / нет автоматического преобразования.
С GNU findutils (большинство *nixes) + Баш, просто сделай:
find -type f -name '*.js' -exec bash -c 'mv "" "${1%???}.ts"' bash {} \;

Comments