From f55c0bd445b43dafccbcae7a1f32dbc78bd2e60f Mon Sep 17 00:00:00 2001 From: Ben Lin <maobin001@msn.com> Date: 星期三, 19 六月 2024 10:48:04 +0800 Subject: [PATCH] 登录更新 --- src/utils/props.ts | 58 +++++++++++++++++++++++++++++----------------------------- 1 files changed, 29 insertions(+), 29 deletions(-) diff --git a/src/utils/props.ts b/src/utils/props.ts index 00b364d..79060bf 100644 --- a/src/utils/props.ts +++ b/src/utils/props.ts @@ -14,9 +14,8 @@ key: { type: T; required: true }; }>['key']; type ResolvePropType<T> = ResolveProp<T> extends { type: infer V } ? V : ResolveProp<T>; -type ResolvePropTypeWithReadonly<T> = Readonly<T> extends Readonly<Array<infer A>> - ? ResolvePropType<A[]> - : ResolvePropType<T>; +type ResolvePropTypeWithReadonly<T> = + Readonly<T> extends Readonly<Array<infer A>> ? ResolvePropType<A[]> : ResolvePropType<T>; type IfUnknown<T, V> = [unknown] extends [T] ? V : T; @@ -27,8 +26,8 @@ default?: R extends true ? never : D extends Record<string, unknown> | Array<any> - ? () => D - : (() => D) | D; + ? () => D + : (() => D) | D; validator?: ((val: any) => val is C) | ((val: any) => boolean); }; @@ -36,8 +35,8 @@ | (T extends PropWrapper<unknown> ? T[typeof wrapperKey] : [V] extends [never] - ? ResolvePropTypeWithReadonly<T> - : never) + ? ResolvePropTypeWithReadonly<T> + : never) | V | C; export type BuildPropType<T, V, C> = _BuildPropType< @@ -52,8 +51,8 @@ ] ? D : D extends () => T - ? ReturnType<D> - : D; + ? ReturnType<D> + : D; export type BuildPropDefault<T, D, R> = R extends true ? { readonly default?: undefined } @@ -129,7 +128,7 @@ return { type: - typeof type === 'object' && Object.getOwnPropertySymbols(type).includes(wrapperKey) + typeof type === 'object' && Object.getOwnPropertySymbols(type).includes(wrapperKey) && type ? type[wrapperKey] : type, required: !!required, @@ -146,12 +145,12 @@ [K in keyof O]: O[K] extends BuildPropReturn<any, any, any, any, any> ? O[K] : [O[K]] extends NativePropType - ? O[K] - : O[K] extends BuildPropOption<infer T, infer D, infer R, infer V, infer C> - ? D extends BuildPropType<T, V, C> - ? BuildPropOption<T, D, R, V, C> - : never - : never; + ? O[K] + : O[K] extends BuildPropOption<infer T, infer D, infer R, infer V, infer C> + ? D extends BuildPropType<T, V, C> + ? BuildPropOption<T, D, R, V, C> + : never + : never; }, >( props: O, @@ -162,22 +161,23 @@ [K in keyof O]: O[K] extends { [propKey]: boolean } ? O[K] : [O[K]] extends NativePropType - ? O[K] - : O[K] extends BuildPropOption< - infer T, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - infer _D, - infer R, - infer V, - infer C - > - ? BuildPropReturn<T, O[K]['default'], R, V, C> - : never; + ? O[K] + : O[K] extends BuildPropOption< + infer T, + // eslint-disable-next-line @typescript-eslint/no-unused-vars + infer _D, + infer R, + infer V, + infer C + > + ? BuildPropReturn<T, O[K]['default'], R, V, C> + : never; }; -export const definePropType = <T>(val: any) => ({ [wrapperKey]: val } as PropWrapper<T>); +export const definePropType = <T>(val: any) => ({ [wrapperKey]: val }) as PropWrapper<T>; -export const keyOf = <T>(arr: T) => Object.keys(arr) as Array<keyof T>; +export const keyOf = <T extends object>(arr: T) => Object.keys(arr) as Array<keyof T>; + export const mutable = <T extends readonly any[] | Record<string, unknown>>(val: T) => val as Mutable<typeof val>; -- Gitblit v1.9.3