2016-12-16 24 views
1

我想讓我的TypeScript Enums是全局的,所以我不需要在我的應用程序中導入它們。如何在Node.js中註冊全局TypeScript Enum

我到目前爲止有:

讀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'. 

雖然在運行時可能會起作用,但我不是abl e通過declare var Enums: typeof enums;引用枚舉,因爲該文件是一個模塊。

如何在不導入模塊的情況下引用此類型定義,同時將未來的枚舉定義保存在單獨的文件中?

更新:我還需要將函數的返回類型設置爲ReadState枚舉。

根據目前選擇的答案我有這樣的:

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

const enums = { 
    ReadState: ReadState 
} 

declare global { 
    const Enums: typeof enums; 
} 

在另一個文件我想設置對這些函數的返回類型,但打字稿是不爽:

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

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

回答

3

使用declare global塊:

declare global { 
    const Enums: typeof enums; 
} 
+0

完美!謝謝瑞恩。 – kenhowardpdx

+0

我已經添加了更多的問題。我遇到了函數返回類型的問題。 – kenhowardpdx