我在CommandEnum.ts中有以下内容:
export enum CommandEnum {
createProject,
renameProject,
hablaBabla
}
Run Code Online (Sandbox Code Playgroud)
在我能够从实现代码中引用的模块中,使用
import {CommandEnum} from '../server/contracts/CommandEnum'
let x = CommmandEnum.hablaBabla
Run Code Online (Sandbox Code Playgroud)
在CommandEnum.js中,枚举文件被编译为带导出逻辑的javascript函数.
这现在工作正常,但我想在我的界面中引用此枚举,我尝试:
/// <reference path="../contracts/CommandEnum.ts" />
namespace ValueTypes {
export interface Command {
type : CommandEnum;
referenceId : string;
}
}
Run Code Online (Sandbox Code Playgroud)
现在,这个引用不会导入CommandEnum类型,但我尝试过的一些其他模块/命名空间/导出组合. 我可以使用参考语法,但不是模块语法,反之亦然 - 但不是两者兼而有之.
这有可能吗?使用纯定义接口文件中的枚举似乎是一种非常常见的场景.但是当实现接口时,枚举必须以"函数形式"提供,并且这两个模型似乎没有结合?
我有类同样的问题,我想命名,.Net风格 - 我不得不放弃.但是,我的接口中没有引用类 - 枚举是.
我使用node.js并编译为单个文件,而不是单个连接的输出.
现在工作正常,但我也想在我的界面中引用这个枚举
您可以将内容从 a 移动module到全局命名空间 usedeclare global
例如myEnumGlobalDeclare.ts
import {MyEnum as MyEnumModule} from "./myEnum";
declare global {
declare var MyEnum: typeof MyEnumModule;
}
Run Code Online (Sandbox Code Playgroud)
例如myEnumGlobalDefine.ts
import {MyEnum as MyEnumModule} from "./myEnum";
MyEnum = MyEnumModule;
Run Code Online (Sandbox Code Playgroud)
或者类似的东西^。当然,这意味着你的运行时应该支持全局增强,例如在你需要使用的nodejsglobals和浏览器中window。
我绝对不建议走这条路。相反,创建一个全局types.ts模块并在任何地方使用它。例如alm有这个文件:https://github.com/alm-tools/alm/blob/master/src/common/types.ts
| 归档时间: |
|
| 查看次数: |
10609 次 |
| 最近记录: |