3

我想调试我的项目,我发现创建类实例的小问题。我试着用简单的例子来描述它。

//this is saved in file Engine.ts
module Car {
    export class Engine {
        name: string;

        constructor(name: string) {
            this.name = name;
         }

         getName(): string{
            return this.name;
        }
    }
}

这个类用他的名字描述了简单的引擎。现在我想在某些车辆中创建引擎:

///<reference path="Engine.ts"/>
//this is saved in file app.ts
module Car {
    export class Vehicle {
        name: string;
        constructor(name: string) {
            this.name = name;
        }
        buildCar() : string {
            var engine = new Engine("Volkswagen 1.9TDI");
            return "Name of the vehicle is " + this.name + " and has engine " + engine.getName();
        }
    }
}

window.onload = () => {
    var car = new Car.Vehicle("Skoda Rapid");
    alert(car.buildCar);
}

问题在于创建类引擎的实例。浏览器控制台返回 Car.Engine 不是构造函数的错误。我该如何解决这个问题?我有更困难的项目,这仅描述了问题的主要原理。在我的项目中,我必须在其他类的函数中创建某个类的实例。

4

3 回答 3

7

听起来您已经编译为 engine.js 和 app.js,但实际上并没有像 app.js 那样通过script标签加载 engine.js。

于 2013-10-22T18:58:12.580 回答
1

除了有时与在运行时不包括脚本有关,正如 Ryan 回答的那样(对于这个特定问题肯定是这种情况),这也可能是由文件中类的排序引起的。

如果这是您遇到的问题,则将错误中提到的类移动到使用之前的位置将解决问题。

于 2016-01-06T19:36:18.907 回答
0

使用 --out 编译器标志编译 app.ts。这将在生成的文件中包含 engine.ts 的代码。

于 2013-10-22T21:03:17.530 回答