javascript - 无法在 JavaScript 中实例化 TypeScript 类

标签 javascript class typescript instantiation

我对这个可能该死的问题感到抱歉。

问题:

我已经在 typescript 中定义了类,如下所示:

1    class MyClass {
2        constructor() {
3            alert("MyClass instantiated!");
4        }
5    }
6    export = MyClass;

它被编译成javascript如下:

1    var MyClass = (function () {
2        function MyClass() {
3            var _this = this;
4            alert("MyClass instantiated!"); 
5        }
6    }
7    module.exports = MyClass

它是从 jsp 页面引用的 - 该页面还执行以下操作:

<script language='javascript' src="myclass.js">
    var myclass = new MyClass();
</script>

现在,我已经对其进行了调试,它到达了(已编译的 .js 的)1 行,然后在同一文件的 7 行处退出。

问题:

为什么不进入函数并退出?我是否错误地实例化了它?

最佳答案

问题在于您将 TypeScript 导出为 commonjs 格式(由第 7 行的 module.exports = MyClass 指示)。
您需要的是将 TypeScript 编译为浏览器可以接受的 UMD 格式。
或者只需从 TypeScript 源代码中删除 export = MyClass; 即可。


工作 TS 代码:

class MyClass {
    constructor() {
        alert("MyClass instantiated!");
    }
}

将被编译为:

var MyClass = (function () {
    function MyClass() {
        var _this = this;
        alert("MyClass instantiated!"); 
    }
}

然后在页面上使用:

<script type="text/javascript" src="myclass.js"></script>
<script>
    var myclass = new MyClass();
</script>

关于javascript - 无法在 JavaScript 中实例化 TypeScript 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36502463/

相关文章:

javascript - 带 MD 菜单的 MD 日期选择器

javascript - 如何通过比较两个字符串数组来获得相似的字符串?

javascript - AngularJS 中 $scope.myScope = function() 和 function() 有什么区别

javascript - jquery 自动完成,从 mysql 查询传递 JSON 数据

java - 安装了Java SE开发工具包,但无法使用命令javac

c++ - :c++ template function 中的错误

objective-c - 包含文件时出错

typescript - 可以弄清楚如何让 TypeScript 对返回的 Promise 感到满意

javascript - 如何将 Javascript 文件导入 Ionic/Angular 项目

angular - 带有 HttpParams 的 HttpClient POST