README
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-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.of
instead ofnew
for I often lostnew
in 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); // true
Extend 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
'soptions
structuretoFormValueEnum
: 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 test
Build library via father-build
,
$ npm run build
CHANGELOG
1.0.1
- remove dependencies
lodash
1.0.0
- first version
0.0.1
- publish test