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表示“有区别的联合”