将Enum导入到接口中断接口

时间:2018-06-05 07:34:45

标签: typescript enums interface

我想将枚举导入接口。 (使用typescript 2.5)但是这将在另一个接口中使用接口中断。这是示例代码

allEnums.ts

export enum ButtonType {
    Top = 1,
    Bottom = 2
}

other enums following ...

buttonInterface.d.ts

import { ButtonType } from "allEnums";
interface ButtonInterface {
    buttonType: ButtonType
}

formInterface.d.ts

interface FormInterface { 
    buttos: ButtonInterface[]
}

结果是formInterface.d.ts

中的错误
  

找不到名称ButtonInterface

将ButtonInterface导入FormInterface是有帮助的,就像这样

import { ButtonInterface } from "buttonInterface";

但是我认为导入接口不是一个好的解决方案

2 个答案:

答案 0 :(得分:2)

TypeScript 2.9开始,您可以在不导入类型的情况下导入类型:

import("./buttonInterface").ButtonInterface

只要您使用的是TypeScript 2.9或更高版本,就可以在场景中使用它。您也可以给它一个别名:

type ButtonInterface = import('./buttonInterface').ButtonInterface;

interface FormInterface { 
    buttos: ButtonInterface[]
}

您的IDE /文本编辑器可能达不到这一点,但如果您发现编辑器内错误,请运行tsc进行检查。

答案 1 :(得分:1)

我认为将枚举作为类型导入更干净,因为不想编写包含接口的代码

allEnums.ts

export enum ButtonType {
    Top = 1,
    Bottom = 2
}

buttonInterface.d.ts

type ButtonType = import('allEnums').ButtonType;
interface ButtonInterface {
    buttonType: ButtonType
}

formInterface.d.ts

interface FormInterface { 
    buttos: ButtonInterface[]
}