TypeScript 和 SystemJS:angular ui 路由器模块未在转译后的 js 中注册

TypeScript & SystemJS: angular ui router module not registered in transpiled js

我正在编写一个 AngularJS 应用程序,其中 TypeScript 作为转译器,SystemJS 用于模块加载。我试图加载 angular-ui-router 模块来配置路由,但没有成功。我收到此错误:

angular.js:38 Uncaught Error: [$injector:modulerr]

这是脚本:

import * as angular from "angular";
import * as router from "angular-ui-router";

const app: angular.IModule = angular.module("my.website", ["ui.router"]);
app.config((stateProvider: router.IStateProvider) => {
    ...
});

这是脚本的转译方式:

System.register(["angular"], function(exports_1, context_1) {
...

如您所见,angular-ui-路由器未注册,因此未加载模块。为什么?我做错了什么?

为了完整性: 这是 SystemJS 配置:

System.config({
    defaultJSExtensions: true,
    map: {
        "angular": "https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js",
        "angular-ui-router": "https://cdnjs.cloudflare.com/ajax/libs/angular-ui-router/0.3.1/angular-ui-router.min.js"
    }
});

这些是相关的 TypeScript 设置:

"target": "es5",
"module": "system"

我已经使用 typings.

加载了 TypeScript 定义文件

转译由 gulp-typescript 完成。

有什么线索吗?

我设法通过导入文件和模块让它工作。尽管它可能很丑陋,但它有效:

import * as angular from "angular";
import "angular-ui-router";
import * as router from "angular-ui-router";

const app: angular.IModule = angular.module("my.website", ["ui.router"]);
app.config((stateProvider: router.IStateProvider) => {
    ...
});