Typescript 如何使枚举作为对象具有值?

Typescript 如何使枚举作为对象具有值?,typescript,Typescript,如果我将StatusTypes更改为enum,我会得到一个错误。我将StatusTypes作为一个对象,这样我就可以像StatusTypes.success那样在我的应用程序中始终如一地应用它 export const StatusTypes = { idl: {name: 'idle', message: ''}, success: {name: 'success', message: 'Success.'}, error: {name: 'error', message: 'So

如果我将
StatusTypes
更改为enum,我会得到一个错误。我将
StatusTypes
作为一个对象,这样我就可以像
StatusTypes.success那样在我的应用程序中始终如一地应用它

export const StatusTypes = {
  idl: {name: 'idle', message: ''},
  success: {name: 'success', message: 'Success.'},
  error: {name: 'error', message: 'Something went wrong.'},
};

export type Status =
  | {name: 'idle'; message: ''}
  | {name: 'success'; message: 'Success.'}
  | {name: 'error'; message: 'Something went wrong.'};

如何使
状态
键入更简洁,而不重复上面的代码?

猜测您想要一些预定义的状态对象,下面这样如何:

导出类状态{
静态空闲=新状态('空闲','');
静态成功=新状态(“成功”、“成功”);
静态错误=新状态('error','Something出错');
建造师(
公共只读名称:“空闲”|“成功”|“错误”,
公共只读消息:字符串,
){}
}

我认为更好的方法是将
名称
键设为枚举,然后将消息保留为简单字符串(因为对于每个不同的错误,错误消息应该不同)

大概是这样的:

导出类型状态={
名称:“空闲”|“成功”|“错误”
消息:string
}
const StatusTypes:{idle:Status;success:Status;error:Status}={
空闲:{name:“idle”,消息:“…”},
成功:{name:“success”,消息:“…”},
错误:{name:“error”,消息:“…”},
}
和ctrl-f表示“有区别的联合”