Javascript TypeScript:未定义枚举对象
我正在通过TypeScript创建一个应用程序,并使用WebPack进行传输和绑定。 我正在一个纯JavaScript网站上使用此应用程序的最终结果。在此应用程序中,我定义了一个枚举,如下所示:Javascript TypeScript:未定义枚举对象,javascript,typescript,webpack,Javascript,Typescript,Webpack,我正在通过TypeScript创建一个应用程序,并使用WebPack进行传输和绑定。 我正在一个纯JavaScript网站上使用此应用程序的最终结果。在此应用程序中,我定义了一个枚举,如下所示: export const enum ShapeType { Actor,Ellipse,Border,Connector } export enum ShapeType { Actor,Ellipse,Border,Connector } 我还将其导出为: export { Shap
export const enum ShapeType {
Actor,Ellipse,Border,Connector
}
export enum ShapeType {
Actor,Ellipse,Border,Connector
}
我还将其导出为:
export { ShapeType } from "./shape/shape.type";
但当我试着像这样使用它时:
var createdShape = new shapeFactory.createShape(ShapeType.Ellipse);
它不创建形状,当我调试时,我看到此错误:“未定义形状类型”
我还尝试在最后一个JavaScript捆绑文件中查找ShapeType,但我发现捆绑文件中也没有ShapeType。
我在TS中导入它时没有问题
下面的代码是js代码。ChartDraw是我在Web包配置文件中定义的库名称。所有其他功能都可以正常工作。唯一的问题是
var aa = shapeFactory.createShape(ChartDraw.ShapeType.Ellipse);
因为没有定义ShapeType
var svg = new ChartDraw.Svg("drawing");
var shapeFactory = new ChartDraw.ShapeFactory(svg);
var ob1 = null;
var ob2 = null;
//aa.draw();
var cc = new ChartDraw.Connector(svg);
var bb = new ChartDraw.MouseReader();
bb.setExportFunction(info => {
var aa = shapeFactory.createShape(ChartDraw.ShapeType.Ellipse);
aa.rectangularPosition = info;
aa.draw();
if (ob1 == null)
ob1 = aa;
else {
ob2 = info;
cc.beginObject = ob1;
cc.endObject = aa;
cc.draw();
}
});
下面的代码是我导入ShapeType的地方:
import { ShapeType } from "./shape.type";
import { Actor } from "./actor";
import { Svg } from "../svg";
import { Shape } from "./shape";
import { Ellipse } from "./ellipse";
export class ShapeFactory {
private svg: Svg;
constructor(svg: Svg) {
this.svg = svg;
}
public createShape(shape: ShapeType):Shape {
switch (shape) {
case ShapeType.Actor:
let actor = new Actor(this.svg);
return actor;
case ShapeType.Ellipse:
let ell = new Ellipse(this.svg);
return ell;
}
}
}
最后,我发现了问题所在。 第一个问题是因为常量。当typescript代码转换为JavaScript时,枚举会转换为对象,但如果我添加const关键字,它就不再是对象了。因此,为了修复它,我删除了常量,如下所示:
export const enum ShapeType {
Actor,Ellipse,Border,Connector
}
export enum ShapeType {
Actor,Ellipse,Border,Connector
}
第二个问题在我的JavaScript代码中。在第一步中,调用
shapeFactory.createShape(ChartDraw.ShapeType.Ellipse)
时,我忘记了将库名(ChartDraw)添加到ShapeType中,这是另一回事。当我把它转换成JS时,我遇到了这个问题。当我在另一个TS文件中导入它时,它工作正常。我猜你没有导入ShapeType。您可能需要从“pathOfJSFile”导入{ShapeType};你能分享你的JS文件吗?如果问题是JS而不是TS,这将有助于快速调试;应该是从“/shape/shape.type”导入{ShapeType};