3

Я компилирую несколько файлов типа TypeScript в один файл JavaScript. Скажем, например, они называются:Компиляция типаScript, вызывающая ошибки зависимостей

A.ts // depends on C.ts 
B.ts // depends on C.ts 
C.ts 

Когда я проверил вывод JavaScript, я нашел проблему: __extends функции машинописи не удалась из-за того прошло undefined значение.

Компиляция должна была в следующем порядке:

C.ts // because A and B depend on this respectively. 
A.ts 
B.ts 

, но, к сожалению, они были составлены в соответствии с их названиями (в алфавитном порядке), а не в порядке зависимости.

  • Можно ли это решить?
  • Знает ли команда TypeScript об этой проблеме?

Примечание. Это проблема компилятора Visual Studio TypeScript. Предположительно, используя компилятор командной строки, это исправит, но я хотел бы скомпилировать его из Visual Studio.

+0

Sidenote: прочитайте ["' --out' is bad "] (https://github.com/TypeStrong/atom-typescript/blob/master/docs/out.md) из basarat. –

+0

Обратите внимание, что Visual Studio использует в качестве командной строки тот же набор команд, что и в командной строке, там нет никакой разницы. – Alex

+0

Рассмотрите возможность маркировки одного ответа в качестве принятого или запросите дополнительную информацию, чтобы ответить на ваш вопрос :) – Alex

ответ

1

, но, к сожалению, они были составлены в соответствии с их названиями (по алфавиту), а не в порядке зависимости

https://github.com/TypeStrong/atom-typescript/blob/master/docs/out.md

машинопись не делает автоматический заказ файла. Вы должны скомпилировать некоторый флаг --module, например. commonjs, а затем позволить внешнему загрузчику модулей разрешить эти цепи зависимостей для вас.

Подробнее: http://basarat.gitbooks.io/typescript/content/docs/project/modules.html

0

Для компилятора, чтобы объединить файлы в правильном порядке, вы должны использовать reference tags в каждом файле, который зависит от других файлов. Это позволит компилятору сделать график зависимостей ваших ресурсов и правильно отсортировать их, если у вас нет циклических зависимостей.

Другой вариант - вручную сортировать входные данные компилятору, предоставив ему полный отсортированный список всех файлов или используя _references.ts, чтобы определить по крайней мере первый набор файлов для загрузки по порядку.

Подробнее о том, как это работает here.