vtils
Version:
一个面向业务的 JavaScript/TypeScript 实用程序库。
56 lines (54 loc) • 1.49 kB
JavaScript
import _extends from "@babel/runtime/helpers/esm/extends";
import { castArray, invert } from 'lodash-uni';
// https://stackoverflow.com/questions/56415826/is-it-possible-to-precisely-type-invert-in-typescript
/**
* 构造枚举数据。
*
* @param map 枚举映射数据
*/
export function makeEnum(map) {
var res = _extends({}, map, invert(map));
Object.defineProperties(res, {
$list: {
value: Object.keys(map).reduce(function (res, key) {
res.push({
label: key,
value: map[key]
});
return res;
}, []),
enumerable: false,
writable: false,
configurable: false
},
$buildList: {
value: function (keys) {
var labelMap = Array.isArray(keys) ? undefined : keys;
keys = Array.isArray(keys) ? keys : Object.keys(keys);
return Object.keys(map).reduce(function (res, key) {
if (keys.includes(key)) {
res.push({
label: (labelMap == null ? void 0 : labelMap[key]) || key,
value: map[key]
});
}
return res;
}, []);
},
enumerable: false,
writable: false,
configurable: false
},
$is: {
value: function (value, keys) {
return castArray(keys).some(function (key) {
return value === key || value === res[key];
});
},
enumerable: false,
writable: false,
configurable: false
}
});
return res;
}