Ant Design @ Thu, Feb 23, 2023 9:09 PM
Ant Design @ Thu, Mar 16, 2023 11:03 AM
Expand 16 lines ...
17
useEffect(() => form.resetFields(), [form, initialValues]);
17
useEffect(() => form.resetFields(), [form, initialValues]);
18
```
18
```
19
或者也可以选择销毁使用 Form.useForm() 的组件,form values 记录在这个钩子中。
19
或者也可以选择销毁使用 Form.useForm() 的组件,form values 记录在这个钩子中。
20
+
21
+
## @ant-design/pro-table 优化
22
+
23
+
> https://stackoverflow.com/questions/58434389/typescript-deep-keyof-of-a-nested-object
24
+
25
+
声明一个类型替换 ProColumns 优化提示。
26
+
```ts
27
+
import type { ProColumns } from '@ant-design/pro-components';
28
+
29
+
type Cons<H, T> = T extends readonly any[]
30
+
  ? ((h: H, ...t: T) => void) extends (...r: infer R) => void
31
+
    ? R
32
+
    : never
33
+
  : never;
34
+
35
+
type Prev = [
36
+
  never,
37
+
  0,
38
+
  1,
39
+
  2,
40
+
  3,
41
+
  4,
42
+
  5,
43
+
  6,
44
+
  7,
45
+
  8,
46
+
  9,
47
+
  10,
48
+
  11,
49
+
  12,
50
+
  13,
51
+
  14,
52
+
  15,
53
+
  16,
54
+
  17,
55
+
  18,
56
+
  19,
57
+
  20,
58
+
  ...0[],
59
+
];
60
+
61
+
export type Paths<T, D extends number = 3> = [D] extends [never]
62
+
  ? never
63
+
  : T extends object
64
+
  ? {
65
+
      [K in keyof T]-?:
66
+
        | [K]
67
+
        | (Paths<T[K], Prev[D]> extends infer P ? (P extends [] ? never : Cons<K, P>) : never);
68
+
    }[keyof T]
69
+
  : [];
70
+
71
+
export type ProColumnDetectType<T> = Omit<ProColumns<T>, 'dataIndex'> & {
72
+
  dataIndex?: Paths<T> | keyof T;
73
+
};
74
+
```
75
+
可以在数组中递归提示范型的键。效果如下:
76
+
```
77
+
const columns: ProColumnDetectType<{
78
+
    a: {
79
+
        b: {
80
+
            c: 1
81
+
        }
82
+
    }
83
+
}> = [
84
+
    {
85
+
        dataIndex: ['a', 'b', ''] // code complete will suggest `c`
86
+
    }
87
+
]
88
+
```