If you're using Typescript, you will realize that the enum type under typescript is not so useful, so I created this repository to handle the enum type.
If you wanta see what you defined before, just move you mouse and hovering it.
Install
yarn add bracket-enum
Define a BracketEnum
import { BracketEnum } from 'bracket-enum';
const STATUS = BracketEnum.of([
// [CODE, [VALUE, DESC, EXTR]]
['AUDIT_WAIT', [1, 'pass', 'extra1']],
['AUDIT_PASS', [2, 'reject', 'extra2']],
]);
// --- or
const STATUS_2 = new BracketEnum([
// [CODE, [VALUE, DESC, EXTR]]
['AUDIT_WAIT', [1, 'pass', 'extra1']],
['AUDIT_PASS', [2, 'reject', 'extra2']],
]);I recommand you use
BracketEnum.ofinstead ofnewfor I often lostnewin my code.
Basic Use
STATUS.getValueByCode('AUDIT_PASS'); // 2
STATUS.getDescByCode('AUDIT_WAIT'); // 'pass'
STATUS.getDescByValue(2); // 'pass'
STATUS.getAllValues(); // [1, 2]
// -- detect a value is match code
const currentState = 2;
STATUS.checkValueByCode('AUDIT_PASS', currentState); // trueExtend it by youself
Because I use class to create BracketEnum, so you can just extends it
// extend
class myEnums extends Dtnums {
// ---
}
new myEnums([]);
myEnums.of([]);e.g.
I use antd more often, so I add a function names toFormOption build in that could create the Options structure needed to generate Select in antd. If you need to define it, you can follow like below.
class myEnums extends Dtnums {
// build in funtion aready, name toFormOptions
toMyFormOptions(hasAll: boolean = false): any[] {
const allOption = {
key: null,
value: null,
label: '全部',
extra: null,
};
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const result = this.configList.map(([code, [value, desc, extra]]) => {
return {
key: value,
value,
label: desc,
extra,
};
});
if (hasAll) {
return [allOption, ...result];
}
return result;
}
}
new myEnums([]);
myEnums.of([]);Build in function
-
of(): create BracketEnum -
getValueByCode([code]) -
getDescByCode([code]) -
getExtraByCode([code]) -
getExtraByValue([value]) -
getDescByValue([value]) -
getAllValues() -
checkValueByCode([code], value) -
toFormOptions([hasAll:Boolean]): ganerateantd'soptionsstructure -
toFormValueEnum: ganerateantd pro table's ValueEnum
If you wanta fork this repo and do some works, you could see beflow or just out and enjoy it.
Install dependencies
yarnrun unit test
$ npm run testBuild library via father-build,
$ npm run build- remove dependencies
lodash
- first version
- publish test

