TypeScript构造函数 - 环境上下文错误

时间:2015-09-23 22:45:34

标签: syntax typescript

如何在TypeScript中创建构造函数?

看了一堆指南,但语法肯定已经改变了。这是我最近的尝试:

car.d.ts

declare class Car {
    constructor(public engine: string) {
        this.engine = engine + "foo";
    }
}

错误:

  

无法在环境上下文中调用实现。

1 个答案:

答案 0 :(得分:9)

通过使用declare,您可以定义类类型。该类型仅定义,并且不应具有实现,因此需要删除declare。然后它编译得很好。

class Car {
    constructor(public engine: string) {
        this.engine = engine + "foo";
    }
}

但是该代码编译为:

var Car = (function () {
    function Car(engine) {
        this.engine = engine;
        this.engine = engine + "foo";
    }
    return Car;
})();

engine属性设置两次。

这可能不是你想要的,所以应该在类上定义engine属性,而不是构造函数。

class Car {

    public engine: string;

    constructor(engine: string) {
        this.engine = engine + "foo";
    }
}

编辑:

您收到的有关需要declare的错误是由于您使用.d.ts扩展名来定义文件。如果您希望将文件编译为JavaScript,则扩展名应为.ts

编辑2:

declare class Car {

    public engine;

    constructor(engine: string);
}