export default class Enum {
private __props: { [key: number|string]: { key: number|string, name: string, value: number|string } };
constructor(props: { key: number|string, name: string, value: number|string }[] = []) {
this.__props = {};
if (props.length) {
props.forEach((element) => {
if (element.key && element.value) {
this[element.key] = element.value;
this.__props[element.value] = element;
} else {
console.error(element + "Enum缺少必要的key或value");
}
});
}
}
get(value: number|string): { key: number|string, name: string, value: number|string } | undefined {
return this.__props[value];
}
getArray(): { key: number|string, name: string, value: number|string }[] {
const arr = [];
for (const key in this.__props) {
if (Object.prototype.hasOwnProperty.call(this.__props, key)) {
arr.push(this.__props[key]);
}
}
return arr;
}
}
使用
import Enum from '/@/utils/Enum.js';
const MoldStatusEnum = new Enum([
{
key: 'HavingIngots',
name: '有锭',
value: 1,
},
{
key: 'NoIngot',
name: '无锭',
value: 2,
},
]);
export default MoldStatusEnum;
代码种获取
JobStateEnum.get(value).name;
let arr = JobStateEnum.getArray().filter((item) => item.value >= 5);