首页 > 解决方案 > 从库中导出枚举并在消费者打字稿项目中使用它

问题描述

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

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

import { IMyComponentProps, MyComponent } from "mycomp-lib";

如您所见,我可以使用IMyComponentProps. 我将它用于一个函数,该函数将进行一些计算并为MyComponent.

但是从我的库中,我还导出了一个枚举,它是这样的:

export const enum DirectionEnum {
  UP,
  DOWN,
  RIGHT,
  LEFT
}

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

我开始收到DirectionEnum未从mycomp-lib.

这个枚举是必需的,因为即使消费者mycomp-lib是用纯 JavaScript 编写的,它也很有用。但是在打字稿项目中,它绝对是需要的。

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

标签: javascriptreactjstypescriptenums

解决方案


哦,我明白了。

Typescript 不为 .const enum创建查找表,它只为enum. 但正因为如此,const enum性能更好。

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

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

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


推荐阅读