Я сделал следующее:
Я установил moment
файл определения следующим образом:
tsd install moment --save
Затем я создал main.ts ]:
///
import moment = require("moment");
moment(new Date());
И я побежал:
$ tsc --module system --target es5 main.ts # no error
$ tsc --module commonjs --target es5 main.ts # no error
main.js
выглядит так:
// https://github.com/ModuleLoader/es6-module-loader/blob/v0.17.0/docs/system-register.md - this is the corresponding doc
///
System.register(["moment"], function(exports_1) {
var moment;
return {
setters:[
function (moment_1) {
// You can place `debugger;` command to debug the issue
// "PLACE XY"
moment = moment_1;
}],
execute: function() {
moment(new Date());
}
}
});
Моя версия TypeScript 1.6.2.
Это то, что я узнал:
Momentjs экспортирует функцию (то есть _moment = utils_hooks__hooks
и utils_hooks__hooks
- функция, это совершенно ясно.
Если вы разместите точку останова в месте, которое я обозначил как PLACE XY
выше, вы увидите, что moment_1
является объектом (!), А не функцией. Соответствующие строки: 1 , 2
В заключение, проблема не имеет ничего общего с TypeScript. Проблема в том, что systemjs не сохраняет информацию о том, что momentjs экспортирует функцию. Systemjs просто копирует свойства экспортируемого объекта из модуля (функция также является объектом в JavaScript). Я полагаю, вам следует сообщить о проблеме в репозиторий systemjs, чтобы выяснить, считают ли они ее ошибкой (или возможностью:)).
Возможно, вы захотите передать параметры, используя # вместо? в локальных файлах.
Firefox и Chrome позволят вам это сделать. Но IE этого не сделает. IE возвращает файл, который не найден, как вы сказали.
file:///D:/tmp/test.htm?blah=1
<script language='javascript'>
function getUrlVars()
{
var vars = [], hash;
var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
for(var i = 0; i < hashes.length; i++)
{
hash = hashes[i].split('=');
vars.push(hash[0]);
vars[hash[0]] = hash[1];
}
return vars;
}
alert(getUrlVars());
</script>
вы хотите сказать, что вам нужно что-то вроде
window.location.search
http://developer.mozilla.org/En/DOM/Window.location
search: часть URL, которая следует за? символ, включая? символ.