Javascript TypeScript:未定义枚举对象

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

我正在通过TypeScript创建一个应用程序,并使用WebPack进行传输和绑定。 我正在一个纯JavaScript网站上使用此应用程序的最终结果。在此应用程序中,我定义了一个枚举,如下所示:

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};