为什么我的 Typescript 导入仅在我执行 "console.log(myImport)" 时有效?

Why does my Typescript import only work if I do "console.log(myImport)"?

我正在尝试使用 JSPM 0.17.0.

加载我的 Angular 1.5.2 应用程序(使用 Typescript 编写)

这是我的 HTML:

<!DOCTYPE html>
<html ng-app="MyApp">
  <head>
    <meta charset="utf-8">
    <title>My App</title>
    <meta name="description" content="">
    <meta name="viewport" content="width=device-width">

    <link rel="stylesheet" href="index.css">

    <script src="jspm_packages/system.js"></script>
    <script src="jspm.browser.js"></script>
    <script src="jspm.config.js"></script>
  </head>
  <body>
    <main first-name="huh" last-name="what"></main>
    <script>
      SystemJS.import('app.ts');
    </script>
  </body>
</html>

对于我的./app.ts这不起作用↓

import $ from 'jquery'
import angular from 'angular'
import main from './components/main/main.ts';

module app {

    angular.module('MyApp', [
        'main'
    ])

}

// which gives me "[$injector:nomod] Module 'main' is not available!"

这确实有效↓

import $ from 'jquery'
import angular from 'angular'
import main from './components/main/main.ts';

module app {

     angular.module('MyApp', [
        'main'
    ])

    console.log(main);

}

// Now it works fine, no error.

那么,除非我在模块声明中使用 console.log(main) 明确引用我导入的模块,否则为什么会失败?我的导入语法有什么问题?

为避免引发副作用,imports are not loaded until referenced in a module

归功于 Ryan Cavanaugh