在 HTML 文件中使用 System.js 调用打字稿 class 方法

Using System.js in HTML file to invoke a typescript class method

我正在试用 Typescript 和 System.js。 Typescript 编译器是 运行 -w 标志。

我想在页面加载时调用一个方法,我可以导入播放,但不能使用 'then':

HTML 文件:

<!doctype html>
<head>
  <script src='//cdnjs.cloudflare.com/ajax/libs/systemjs/0.19.41/system.js'> </script>
  <script>
    System.import('./play.js').then(function(play) { 
      play.start(); 
    });
  }
  </script>
</head>
<body>
</body>

play.ts 文件:

export class Play {
  start() {
    alert('hello...');
  }
}

我收到错误:Uncaught (in promise) TypeError: play.start is not a function。有什么想法吗?

System.import 结果是一个模块,而不是 class。返回的模块引用了从它导出的所有东西,因此您可以获得 Play class 作为 play.Play,但是要调用 start() 方法,您必须创建一个 start() 的对象 class 首先,使用 new。这样的事情应该有效:

  <script>
    System.import('./play.js').then(function(play) { 
      var player = new play.Play();
      player.start(); 
    });
  }
  </script>