如何在Node.js中注册全局TypeScript枚举

时间:2016-12-16 17:47:29

标签: node.js typescript

我想让我的TypeScript Enums全局化,所以我不需要在我的应用程序中导入它们。

到目前为止我所拥有的:

读state.enum.ts

export enum ReadState {
    Unread = 4000,
    Read = 4001
}

enums.ts

import { ReadState } from './read-state.enum';

const enums = {
    ReadState
}

global['Enums'] = enums;

declare var Enums: typeof enums;

然后在index.ts

import './enums'; // do this once to initialize enums

var _enums = Enums; // [ts] Cannot find name 'Enums'.

虽然在运行时这可能有用,但我无法通过declare var Enums: typeof enums;引用枚举,因为该文件是一个模块。

如何在不导入模块的情况下引用此类型定义,同时将未来的枚举定义保存在单独的文件中?

更新:我还需要将函数的返回类型设置为ReadState枚举。

根据当前选择的答案我有:

import { ReadState } from './read-state.enum';

const enums = {
  ReadState: ReadState
}

declare global {
  const Enums: typeof enums;
}

在另一个文件中,我想在这些函数上设置返回类型,但TypeScript不满意:

function getState1(): Enums.ReadState {
  return Enums.ReadState.Unread;
}

function getState2(): typeof Enums.ReadState {
  return Enums.ReadState.Read;
}

1 个答案:

答案 0 :(得分:3)

使用declare global块:

declare global {
    const Enums: typeof enums;
}