【发布时间】:2018-01-10 09:18:09
【问题描述】:
我想从 HTML 调用 TypeScript(最终是 JavaScript)函数。问题是我还想使用模块系统(systemjs、commonjs 等)和 webpack。
这是一个例子:
example.ts:
export class Example {
myFunction() {
alert('Test');
}
}
example2.ts:
export function doSomething() {
alert('Test2');
}
example.html:
<html>
<head>
<script src="path/to/the/compiled/js/file.js"></script>
<script>
$(document).ready(function() {
$('#test-btn').click(function(){
var example = new Example(); //error1
example.myFunction();
});
});
</script>
</head>
<body>
<button id="test-btn">Click me</button>
<a href="javascript:doSomething()">Click me too</a> <!-- error2 -->
</body>
</html>
错误 cmets 指示错误发生的位置:未找到导出的类/函数,因为使用了模块 System。如果我查看编译后的 js 文件,我可以看到类和函数声明放在一些模块函数中,因此无法从 HTML 访问它们。
目前我正在使用解决方法,将整个 $(document).ready... 部分移动到 TypeScript 文件中。但对于 <a href... 示例,我没有任何解决方法。
所以我的最后一个问题:实际上是否可以从 HTML 调用 TypeScript 函数/类并使用模块 System?
【问题讨论】:
-
您可以为侦听
message事件的全局函数创建一个单独的文件。那些会广播到你的打字稿应用程序。 -
@DanielLizik 谢谢这是个好主意!但我认为这只是另一个黑客。没有“正确”的方法吗?
-
IMO 这是“正确”的方式。它使您的
window对象不受污染并消除您的顾虑。
标签: javascript html typescript systemjs commonjs