1
我有这个打字稿文件的方法:使用枚举与打字稿,对每个枚举
export type TSumanToString =() => string;
export interface ISumanEvent {
explanation: string,
toString: TSumanToString
}
export interface ISumanEvents{
[key: string]: ISumanEvent
}
export const events: ISumanEvents = Object.freeze({
// runner events
TEST_FILE_CHILD_PROCESS_EXITED: {
explanation: 'runner is started, fires before any test child processes are started.',
toString: makeToString('TEST_FILE_CHILD_PROCESS_EXITED')
},
RUNNER_EXIT_CODE: {
explanation: 'runner is started, fires before any test child processes are started.',
toString: makeToString('RUNNER_EXIT_CODE')
},
RUNNER_EXIT_SIGNAL: {
explanation: 'runner is started, fires before any test child processes are started.',
toString: makeToString('RUNNER_EXIT_SIGNAL')
},
RUNNER_HIT_DIRECTORY_BUT_NOT_RECURSIVE: {
explanation: 'runner is started, fires before any test child processes are started.',
toString: makeToString('RUNNER_HIT_DIRECTORY_BUT_NOT_RECURSIVE')
},
RUNNER_EXIT_CODE_IS_ZERO: {
explanation: 'runner is started, fires before any test child processes are started.',
toString: makeToString('RUNNER_EXIT_CODE_IS_ZERO')
},
RUNNER_TEST_PATHS_CONFIRMATION: {
explanation: 'runner is started, fires before any test child processes are started.',
toString: makeToString('RUNNER_TEST_PATHS_CONFIRMATION')
},
// there are a lot more entries
})
这就产生了一个.d.ts文件中像这样:
export declare type TSumanToString =() => string;
export interface ISumanEvent {
explanation: string;
toString: TSumanToString;
}
export interface ISumanEvents {
[key: string]: ISumanEvent;
}
export declare const events: ISumanEvents;
,但我需要包括各财产作为一个常数或枚举。我可以使用一个界面来做到这一点,但这需要我复制一切,这似乎是一种浪费。
换句话说,我不想要做到这一点,因为这只是重复什么在我的常量,这是一种浪费,而且容易成为出不同步:
export interface ISumanEvents {
TEST_FILE_CHILD_PROCESS_EXITED: ISumanEvent,
RUNNER_EXIT_CODE: ISumanEvent,
RUNNER_EXIT_SIGNAL: ISumanEvent,
RUNNER_HIT_DIRECTORY_BUT_NOT_RECURSIVE: ISumanEvent;
RUNNER_EXIT_CODE_IS_ZERO: ISumanEvent,
RUNNER_TEST_PATHS_CONFIRMATION: ISumanEvent
}
有没有办法创建一个枚举,以便我不必创建一个只重复实际对象中所有内容的接口?
问题是我不知道如何在enum上定义方法。