2014-09-01 2 views
0

Почти все файлы определения, которые так легко доступны, вы знаете где, делаете declare module или declare var. Разве это не проблема? Если я забуду импортировать реализацию объявленного модуля, а затем использовать его, компилятор никогда не даст мне ошибку, но приложение будет ужасно громить во время выполнения.Машинопись: файлы определения и глобальные значения

Один из способов понять, как это решить - записать файлы определений только с помощью declare module "topLevelName", поэтому вы не можете случайно использовать его, не требуя его вначале. Но это создает проблему для таких вещей, как jQuery, потому что люди склонны не require, а просто помещают их в глобальный контекст. В этом случае текущий подход действительно работает правильно.

Я просто не могу обернуть голову вокруг этого огромного ограничения системы. Я что-то упускаю?

+1

TypeScript не проверяет, что все скомпилированные выходные файлы фактически включены на страницу, так как могут быть 'a.ts' и' b.ts', но на странице есть только ' '. – Douglas

ответ

1

Если я забыл импортировать реализацию объявленного модуля, а затем использовать его, компилятор никогда не даст мне ошибку, но приложение будет ужасно крутиться во время выполнения.

Да

Разве это не огромная проблема

Не совсем. Вероятность добавления типов, но забывая включить JavaScript, не очень высока с опытом начинающего уровня.

Я что-то не хватает?

no.

Больше

Большой проблемой является тип совместимость между ЛИЭСОМ например различными библиотеками машинописи в зависимости от разных изданий JQuery.

+0

Когда вы структурируете свое приложение с использованием CommonJS или AMD, вероятность забыть «требовать» файла очень высока, так как вы должны делать это в каждом файле, который использует эту конкретную библиотеку. Вероятность забыть о включении тега скрипта, конечно, очень мала, но это только если вы в порядке с глобальными (и/или не работаете с NodeJS). Я приму свой ответ, потому что кажется, что ваша точка зрения делится между большинством разработчиков скриптов. –

Смежные вопросы