UNPKG

vtils

Version:

一个面向业务的 JavaScript/TypeScript 实用程序库。

60 lines (58 loc) 1.71 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default; exports.__esModule = true; exports.makeEnum = makeEnum; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _lodashUni = require("lodash-uni"); // https://stackoverflow.com/questions/56415826/is-it-possible-to-precisely-type-invert-in-typescript /** * 构造枚举数据。 * * @param map 枚举映射数据 */ function makeEnum(map) { var res = (0, _extends2.default)({}, map, (0, _lodashUni.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 (0, _lodashUni.castArray)(keys).some(function (key) { return value === key || value === res[key]; }); }, enumerable: false, writable: false, configurable: false } }); return res; }