我对javascript / typescript比较新,我收到的运行时错误我不太明白。我正在尝试创建一个TrailingAvg类的实例,但是当我对其进行decalre并产生javascript运行时错误时,我的代码会中断 - TrailingAvg未定义。我虽然我正确设置了类并且语法被接受,但我无法创建此实例。在Typescript中创建类的实例需要做什么?
function drawChart(n) {
uri = getURLParameter("url");
setupHeader();
setupMenu();
var totalcount = 5;
var prevmonth = 0;
var trail = new TrailingAvg(n); //run time error here
}
class TrailingAvg {
totals: number[] = [];
average: number;
size: number;
constructor(n: number) {
this.size = n;
}
push(month, prevmonth, value) {
var zeroes = month - prevmonth;
for (var i = 0; i < zeroes; i++) {
this.totals.shift();
this.totals.push(0);
}
this.totals.push(value);
}
getAvg() {
for (var i = 0; i < this.totals.length; i++) {
this.average = this.average + this.totals[i];
}
return this.average;
}
}
答案 0 :(得分:2)
类定义必须在之前尝试使用它的任何代码。这通常会以两种方式之一出错:
问题:您有foo.ts
并决定将其拆分为foo.ts
和bar.ts
。这会编译为foo.js
和bar.js
,但您的HTML页面只会显示
<script src="foo.js"></script>
解决方案:修复HTML页面以获得其他脚本标记:
<script src="foo.js"></script>
<script src="bar.js"></script>
问题:您有animal.ts
和cat.ts
,其中cat.ts
依赖animal.ts
。您将HTML编写为:
<script src="cat.js"></script>
<script src="animal.js"></script>
并从animal.ts
未定义的内容中获取运行时错误。这是因为脚本按照页面中给出的顺序执行。
解决方案:按依赖顺序排序文件:
<script src="animal.js"></script>
<script src="cat.js"></script>