2015-08-12 4 views
1

Итак, проблема заключается в том, что я пытаюсь использовать knockout-es5 и выводить в обычный формат js, но я пишу все, используя синтаксис es6.typescript es6 output syntax output es5 commonjs module issue

Теперь проблема у меня есть, что я делаю следующее:

import ko from "knockout-es5";

с надеждой, что выход, когда бежал через TSC будет:

var ko = require("knockout-es5");

Однако первый из все, что он не будет компилировать из-за файла дескриптора knockout-es5, не имеет экспорта модуля, поэтому я вошел и добавил к нему следующее:

declare var ko: KnockoutStatic; export module "knockout-es5" { export = ko; } Который, похоже, работает, но если вы посмотрите на результат, где он используется, он делает ko.default.yourMethod, а не ko.yourMethod, который затем не работает.

Так что я немного озадачен, так как мне нравится синтаксис ES6, и мой код написан с использованием импорта и экспорта ES6, но поскольку я зависим от экспортированных модулей, не относящихся к ES6, я не могу найти работоспособную среднюю площадку, я либо удалите экспорт по умолчанию для нокаута, и никакие требования не включены в выходной файл, или я добавляю экспорт по умолчанию, и он добавляет свойство default.

Так есть способ получить мой торт и съесть его здесь?

ответ

1

Вы, вероятно, хотите

import * as ko from "knockout-es5"; 

Ваш оригинальный импорт такой же, как import {default as ko} from ....

Обратитесь к http://www.2ality.com/2014/09/es6-modules-final.html за подробным объяснением синтаксиса.

+0

AH! Я всегда думал, что «как ко» - это не задание, спасибо за помощь. – Grofit