bracket-enum v1.0.1
bracket-enum
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.

How to use it
Install
yarn add bracket-enumDefine 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 BracketEnumgetValueByCode([code])getDescByCode([code])getExtraByCode([code])getExtraByValue([value])getDescByValue([value])getAllValues()toFormOptions([hasAll:Boolean]): ganerateantd'soptionsstructuretoFormValueEnum: ganerateantd pro table's ValueEnum
Development
If you wanta fork this repo and do some works, you could see beflow or just out and enjoy it.
Install dependencies
run unit test
$ npm run testBuild library via father-build,
$ npm run buildCHANGELOG
1.0.1
- remove dependencies
lodash
1.0.0
- first version
0.0.1
- publish test