我有以下内容,在CommandEnum.ts文件中:
export enum CommandEnum {
createProject,
renameProject,
hablaBabla
}
在一个模块中,我能够从实现代码中引用它,使用的方法是:
import {CommandEnum} from '../server/contracts/CommandEnum'
let x = CommmandEnum.hablaBabla
枚举文件被编译成了一个带有导出逻辑的JavaScript函数,位于CommandEnum.js文件中。
现在它可以正常工作,但我也想在我的接口中引用这个枚举,尝试了以下代码:
/// <reference path="../contracts/CommandEnum.ts" />
namespace ValueTypes {
export interface Command {
type : CommandEnum;
referenceId : string;
}
}
现在,这个引用没有导入CommandEnum类型,但是我尝试过的其他模块/命名空间/默认导出组合却可以。我可以让参考语法工作,但不能同时让模块语法和另一种方式同时工作。
这真的可能吗?从一个纯定义接口文件中使用枚举似乎是一个非常常见的情况。但是当接口被实现时,枚举必须以“函数形式”可用,而这两种模型似乎无法结合?
我在类上也遇到了同样的问题,我想将其命名空间化,像.Net一样,但我必须放弃。然而,在我的接口中没有引用类 - 只有枚举。
我使用node.js并编译为单独的文件,而不是单个合并输出。