Bläddra i källkod

fix: Semantic generic parameters

point.halo 10 månader sedan
förälder
incheckning
fc92f7af80
1 ändrade filer med 15 tillägg och 49 borttagningar
  1. 15 49
      packages/semi-foundation/form/interface.ts

+ 15 - 49
packages/semi-foundation/form/interface.ts

@@ -93,58 +93,24 @@ export type FieldPathValue<T, P extends string> =
             ? T[P]
             : never);
 
-// FieldPathValue 类型定义,支持从路径字符串中推导数组和对象的值 (Complex version)
-// export type FieldPathValue<T, P extends string> =
-//   P extends `${infer K}[${infer I}]${infer Rest}` // 处理 array[index] 形式
-//       ? K extends keyof T
-//           ? T[K] extends Array<infer U>
-//               ? I extends `${number}`
-//                   ? Rest extends ''
-//                       ? U
-//                       : Rest extends `.${infer RestPath}`
-//                           ? FieldPathValue<U, RestPath>
-//                           : never
-//                   : never
-//               : never
-//           : never
-//       : P extends `${infer K}.${infer Rest}` // 处理 key.rest 或 array.index 形式
-//           ? K extends keyof T
-//               ? T[K] extends Array<infer U>
-//                   ? Rest extends `${number}${infer IndexRest}`
-//                       ? IndexRest extends ''
-//                           ? U // 简单的数组索引访问 (array.0)
-//                           : IndexRest extends `.${infer RestPath}`
-//                               ? FieldPathValue<U, RestPath> // 嵌套路径 (array.0.field)
-//                               : never
-//                       : FieldPathValue<T[K], Rest> // 其他嵌套对象字段
-//                   : FieldPathValue<T[K], Rest>
-//               : never
-//           : P extends keyof T // 简单的顶层键访问
-//               ? T[P]
-//               : P extends `${number}` // 对于顶层数组路径
-//                   ? T extends Array<infer U>
-//                       ? U
-//                       : never
-//                   : never;
-
 // use object replace Record<string, any>, fix issue 933
-export interface BaseFormApi<T extends object = any> {
+export interface BaseFormApi<FormValuesType extends object = any> {
     /** get value of field */
-    getValue: <P extends FieldPath<T>>(field?: P) => FieldPathValue<T, P>;
+    getValue: <F extends FieldPath<FormValuesType>>(field?: F) => FieldPathValue<FormValuesType, F>;
     /** set value of field */
-    setValue: <K extends FieldPath<T>>(field: K, newFieldValue: any) => void;
+    setValue: <F extends FieldPath<FormValuesType>>(field: F, newFieldValue: any) => void;
     /** get error of field */
-    getError: <K extends keyof T>(field: K) => any;
+    getError: <F extends FieldPath<FormValuesType>>(field: F) => any;
     /** set error of field */
-    setError: <K extends keyof T>(field: K, fieldError: any) => void;
+    setError: <F extends FieldPath<FormValuesType>>(field: F, fieldError: any) => void;
     /** get touched of field */
-    getTouched: <K extends keyof T>(field: K) => boolean;
+    getTouched: <F extends FieldPath<FormValuesType>>(field: F) => boolean;
     /** set touch of field */
-    setTouched: <K extends keyof T>(field: K, fieldTouch: boolean) => void;
+    setTouched: <F extends FieldPath<FormValuesType>>(field: F, fieldTouch: boolean) => void;
     /** judge field exist */
-    getFieldExist: <K extends keyof T>(field: K) => boolean;
+    getFieldExist: <F extends FieldPath<FormValuesType>>(field: F) => boolean;
     /** get formState of form */
-    getFormState: () => FormState<T extends object ? T : object>;
+    getFormState: () => FormState<FormValuesType extends object ? FormValuesType : object>;
     /** get formProps of form */
     getFormProps: (keys?: Array<string>) => ComponentProps;
     /** submit form manual */
@@ -152,14 +118,14 @@ export interface BaseFormApi<T extends object = any> {
     /** reset form manual */
     reset: (fields?: Array<string>) => void;
     /** trigger validate  manual */
-    validate: <K extends keyof T, Params extends Array<K>, V extends Params[number]>(fields?: Params) => Promise<{ [R in V]: T[R] }>;
-    getInitValue: <K extends keyof T>(field: K) => any;
+    validate: <K extends keyof FormValuesType, Params extends Array<K>, V extends Params[number]>(fields?: Params) => Promise<{ [R in V]: [R] }>;
+    getInitValue: <F extends FieldPath<FormValuesType>>(field: F) => any;
     getInitValues: () => any;
-    getValues: () => T;
+    getValues: () => FormValuesType;
     /** set value of multiple fields */
-    setValues: (fieldsValue: Partial<T>, config?: setValuesConfig) => void;
-    scrollToField: <K extends keyof T>(field: K, scrollConfig?: ScrollIntoViewOptions) => void;
-    scrollToError: <K extends keyof T>(config?: ScrollToErrorOptions<K>) => void
+    setValues: (fieldsValue: Partial<FormValuesType>, config?: setValuesConfig) => void;
+    scrollToField: <F extends FieldPath<FormValuesType>>(field: F, scrollConfig?: ScrollIntoViewOptions) => void;
+    scrollToError: <F extends FieldPath<FormValuesType>>(config?: ScrollToErrorOptions<F>) => void
 }
 
 export interface CallOpts {