TypeScript 构造函数 - 环境上下文错误
TypeScript constructor - ambient contexts error
如何在 TypeScript 中创建构造函数?
查看了很多指南,但语法一定已经改变了。这是我最近的尝试:
car.d.ts
declare class Car {
constructor(public engine: string) {
this.engine = engine + "foo";
}
}
错误:
An implementation cannot be called in ambient contexts.
通过使用 declare
,您定义了 class 类型。该类型仅被定义,不应有实现,因此需要删除 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 上定义,而不是构造函数。
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);
}
如何在 TypeScript 中创建构造函数?
查看了很多指南,但语法一定已经改变了。这是我最近的尝试:
car.d.ts
declare class Car {
constructor(public engine: string) {
this.engine = engine + "foo";
}
}
错误:
An implementation cannot be called in ambient contexts.
通过使用 declare
,您定义了 class 类型。该类型仅被定义,不应有实现,因此需要删除 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 上定义,而不是构造函数。
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);
}