refactor(projects): remove enum

This commit is contained in:
Soybean
2023-02-23 08:38:03 +08:00
parent 44b544745d
commit 21d5214247
31 changed files with 323 additions and 240 deletions

View File

@@ -1,57 +1,69 @@
import { EnumDataType } from '@/enum';
import { dataTypeLabels } from '@/constants';
export function isNumber<T extends number>(data: T | unknown): data is T {
return Object.prototype.toString.call(data) === EnumDataType.number;
function getDataTypeString<K extends TypeUtil.DataTypeStringKey>(value: unknown) {
return Object.prototype.toString.call(value) as TypeUtil.DataTypeString<K>;
}
export function isString<T extends string>(data: T | unknown): data is T {
return Object.prototype.toString.call(data) === EnumDataType.string;
export function isNumber<T extends number>(value: T | unknown): value is T {
return getDataTypeString(value) === dataTypeLabels.number;
}
export function isBoolean<T extends boolean>(data: T | unknown): data is T {
return Object.prototype.toString.call(data) === EnumDataType.boolean;
export function isString<T extends string>(value: T | unknown): value is T {
return getDataTypeString(value) === dataTypeLabels.string;
}
export function isNull<T extends null>(data: T | unknown): data is T {
return Object.prototype.toString.call(data) === EnumDataType.null;
export function isBoolean<T extends boolean>(value: T | unknown): value is T {
return getDataTypeString(value) === dataTypeLabels.boolean;
}
export function isUndefined<T extends undefined>(data: T | unknown): data is T {
return Object.prototype.toString.call(data) === EnumDataType.undefined;
export function isNull<T extends null>(value: T | unknown): value is T {
return getDataTypeString(value) === dataTypeLabels.null;
}
export function isObject<T extends Record<string, any>>(data: T | unknown): data is T {
return Object.prototype.toString.call(data) === EnumDataType.object;
export function isUndefined<T extends undefined>(value: T | unknown): value is T {
return getDataTypeString(value) === dataTypeLabels.undefined;
}
export function isArray<T extends any[]>(data: T | unknown): data is T {
return Object.prototype.toString.call(data) === EnumDataType.array;
export function isSymbol<T extends symbol>(value: T | unknown): value is T {
return getDataTypeString(value) === dataTypeLabels.symbol;
}
export function isFunction<T extends (...args: any[]) => any | void | never>(data: T | unknown): data is T {
return Object.prototype.toString.call(data) === EnumDataType.function;
export function isBigInt<T extends bigint>(value: T | unknown): value is T {
return getDataTypeString(value) === dataTypeLabels.bigInt;
}
export function isDate<T extends Date>(data: T | unknown): data is T {
return Object.prototype.toString.call(data) === EnumDataType.date;
export function isObject<T extends Record<string, any>>(value: T | unknown): value is T {
return getDataTypeString(value) === dataTypeLabels.object;
}
export function isRegExp<T extends RegExp>(data: T | unknown): data is T {
return Object.prototype.toString.call(data) === EnumDataType.regexp;
export function isArray<T extends any[]>(value: T | unknown): value is T {
return getDataTypeString(value) === dataTypeLabels.array;
}
export function isPromise<T extends Promise<any>>(data: T | unknown): data is T {
return Object.prototype.toString.call(data) === EnumDataType.promise;
export function isFunction<T extends (...args: any[]) => any | void>(value: T | unknown): value is T {
return getDataTypeString(value) === dataTypeLabels.function;
}
export function isSet<T extends Set<any>>(data: T | unknown): data is T {
return Object.prototype.toString.call(data) === EnumDataType.set;
export function isDate<T extends Date>(value: T | unknown): value is T {
return getDataTypeString(value) === dataTypeLabels.date;
}
export function isMap<T extends Map<any, any>>(data: T | unknown): data is T {
return Object.prototype.toString.call(data) === EnumDataType.map;
export function isRegExp<T extends RegExp>(value: T | unknown): value is T {
return getDataTypeString(value) === dataTypeLabels.regExp;
}
export function isFile<T extends File>(data: T | unknown): data is T {
return Object.prototype.toString.call(data) === EnumDataType.file;
export function isPromise<T extends Promise<any>>(value: T | unknown): value is T {
return getDataTypeString(value) === dataTypeLabels.promise;
}
export function isSet<T extends Set<any>>(value: T | unknown): value is T {
return getDataTypeString(value) === dataTypeLabels.set;
}
export function isMap<T extends Map<any, any>>(value: T | unknown): value is T {
return getDataTypeString(value) === dataTypeLabels.map;
}
export function isFile<T extends File>(value: T | unknown): value is T {
return getDataTypeString(value) === dataTypeLabels.file;
}

View File

@@ -9,13 +9,13 @@ interface ModuleComponent {
default: RouteComponent;
}
type LayoutComponent = Record<EnumType.LayoutComponentName, Lazy<ModuleComponent>>;
type LayoutComponent = Record<UnionKey.LayoutComponentName, Lazy<ModuleComponent>>;
/**
* 获取布局的vue文件(懒加载的方式)
* @param layoutType - 布局类型
*/
export function getLayoutComponent(layoutType: EnumType.LayoutComponentName) {
export function getLayoutComponent(layoutType: UnionKey.LayoutComponentName) {
const layoutComponent: LayoutComponent = {
basic: BasicLayout,
blank: BlankLayout

View File

@@ -1,5 +1,5 @@
/** 获取登录页面模块的动态路由的正则 */
export function getLoginModuleRegExp() {
const modules: EnumType.LoginModuleKey[] = ['pwd-login', 'code-login', 'register', 'reset-pwd', 'bind-wechat'];
const modules: UnionKey.LoginModule[] = ['pwd-login', 'code-login', 'register', 'reset-pwd', 'bind-wechat'];
return modules.join('|');
}

View File

@@ -17,7 +17,7 @@ export async function handleServiceResult<T = any>(error: Service.RequestError |
/** 请求结果的适配器:用于接收适配器函数和请求结果 */
export function adapter<T extends Service.ServiceAdapter>(
adapterFun: T,
...args: Service.MultiRequestResult<TypeUtil.GetFunArgs<T>>
...args: Service.MultiRequestResult<Parameters<T>>
): Service.RequestResult<ReturnType<T>> {
let result: Service.RequestResult | undefined;

View File

@@ -1,6 +1,5 @@
import qs from 'qs';
import FormData from 'form-data';
import { EnumContentType } from '@/enum';
import { isArray, isFile } from '../common';
/**
@@ -8,15 +7,15 @@ import { isArray, isFile } from '../common';
* @param requestData - 请求数据
* @param contentType - 请求头的Content-Type
*/
export async function transformRequestData(requestData: any, contentType?: string) {
export async function transformRequestData(requestData: any, contentType?: UnionKey.ContentType) {
// application/json类型不处理
let data = requestData;
// form类型转换
if (contentType === EnumContentType.formUrlencoded) {
if (contentType === 'application/x-www-form-urlencoded') {
data = qs.stringify(requestData);
}
// form-data类型转换
if (contentType === EnumContentType.formData) {
if (contentType === 'multipart/form-data') {
data = await handleFormData(requestData);
}