我发现了一个奇怪的错误。
如果您在不同的文件中有两个类,例如 class B扩展了 class A,并且 class A有一个类型为B的变量,TypeScript 会使用 --out main.js 命令以错误的顺序编译(当您将整个项目编译到一个文件中时) . 错误的顺序导致 javascript 抛出错误:Uncaught TypeError: Cannot read property 'prototype' of undefined 这是因为代码中的类B比A早,它想使用它。
这是最简单的例子:
A.ts
///<reference path='B.ts'/>
class A
{
public b: B;
constructor()
{
}
init()
{
this.b=new B();
}
}
B.ts
///<reference path='A.ts'/>
class B extends A
{
constructor()
{
super();
}
}
应用程序.ts
///<reference path='A.ts'/>
var a: A=new A();
a.init();
生成的 main.js
var __extends = this.__extends || function (d, b) {
function __() { this.constructor = d; }
__.prototype = b.prototype;
d.prototype = new __();
};
var B = (function (_super) {
__extends(B, _super);
function B() {
_super.call(this);
}
return B;
})(A);
var A = (function () {
function A() {
}
A.prototype.init = function () {
this.b = new B();
};
return A;
})();
var a = new A();
a.init();
//@ sourceMappingURL=main.js.map
有解决方法吗?