Ответ 1
У меня была аналогичная проблема, когда я использовал async\await и Promises (обе конструкции ES6), используя ключевое слово import в исходных файлах ts для импорта других ts-модулей.
Я мог бы перетащить с помощью TypeScript, используя целевую версию js по умолчанию (ES5), которая создает ошибки пересылки, жалуясь на ключевые слова async\await и Promise, но так как я фактически выполняю Node 6.4.0. все на самом деле работает во время выполнения.
В случае, описанном выше, ключевое слово "Импорт" было переведено с ts на js следующим образом:
var BasePage_1 = require('./BasePage');
Итак, я получаю ошибки tsc transpile, но Node отлично работает во время выполнения с переводом "Import".
Если я использую ключ -t, чтобы передать tsc для передачи на ES6, то трансляция будет чистой без ошибок, но затем Node завершится с ошибкой, потому что она говорит, что не понимает ключевое слово "Импортировать" в выпущенном js файле.
Теперь tsc испускает следующий перевод для "Импорт":
import {BasePage} из './BasePage';
Итак, вышеупомянутый перевод действительно не является переводом вообще и Node дросселями в js файле с ключевым словом "Import" во время выполнения.
Резюме:
Я решил эту загадку, используя эту командную строку, чтобы сказать tsc использовать библиотеки ES6, но чтобы исправить правильный синтаксис импорта модуля:
myTypeScriptSourceFile.ts -t ES6 -m commonjs
Теперь я получаю чистую трансляцию и ошибки времени выполнения от Node. Потому что теперь 'Import'
правильно переводится с использованием зарезервированного слова 'require'
.
Подробнее здесь: https://www.typescriptlang.org/docs/handbook/compiler-options.html https://www.typescriptlang.org/docs/handbook/module-resolution.html