从库导出枚举并在消费者打字稿项目中使用它

Vin*_*Dev 1 javascript enums typescript reactjs

我正在创建一个库,从中导出 React 组件以及一些接口和枚举。我编译了打字稿项目。这是因为该库是针对 React 而不是 Typescript 的。我也在创建正确的定义文件。

现在在我的消费者项目中,我正在这样做:

import { IMyComponentProps, MyComponent } from "mycomp-lib";
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,我能够使用IMyComponentProps. 我将其用于一个函数,该函数将进行一些计算并返回 的 props MyComponent

但从我的库中,我还导出一个枚举,如下所示:

export const enum DirectionEnum {
  UP,
  DOWN,
  RIGHT,
  LEFT
}
Run Code Online (Sandbox Code Playgroud)

但当我这样做时import { IMyComponentProps, MyComponent, DirectionEnum } from "mycomp-lib";

DirectionEnum我开始收到未从 导出的错误mycomp-lib

这个枚举是必需的,因为即使 的使用者mycomp-lib是用纯 JavaScript 编写的,它也很有用。但在 typescript 项目中,它肯定是需要的。

我正在使用 typescript v3 和 React v16.3。

Vin*_*Dev 6

哦,我明白了。

Typescript 不会创建 的查找表const enum,它仅创建 的查找表enum。但正因为如此,性能const enum才更好。

对于消费者打字稿项目,可以通过在 tsconfig.json 中提供选项来创建查找表preserveConstEnums: true

这仍然不会让我的库评估查找表中的值(性能优势),但它将将该查找表导出到消费者(我想要的)。

感谢所有思考这个问题的人,我希望这对其他人也有帮助。