@@ -10,13 +10,18 @@ import type {
10
10
} from "./index" ;
11
11
import { UnError , un } from "./index" ;
12
12
13
- /** Align with v10.8 .0 */
13
+ /** Align with v12.3 .0 */
14
14
15
- export interface UseUnReturn < T = UnData , R = UnResponse < T > , D = UnData > {
15
+ export interface UseUnReturn <
16
+ T = UnData ,
17
+ R = UnResponse < T > ,
18
+ D = UnData ,
19
+ O extends UseUnOptions < T > = UseUnOptions < T > ,
20
+ > {
16
21
/** Un 响应 */
17
22
response : ShallowRef < R | undefined > ;
18
23
/** Un 响应数据 */
19
- data : Ref < T | undefined > ;
24
+ data : O extends UseUnOptionsWithInitialData < T > ? Ref < T > : Ref < T | undefined > ;
20
25
/** 是否已经结束 */
21
26
isFinished : Ref < boolean > ;
22
27
/** 是否正在请求 */
@@ -32,12 +37,17 @@ export interface UseUnReturn<T = UnData, R = UnResponse<T>, D = UnData> {
32
37
/** `abort` 别名 */
33
38
cancel : ( message ?: string | undefined ) => void ;
34
39
}
35
- export interface StrictUseUnReturn < T , R , D > extends UseUnReturn < T , R , D > {
40
+ export interface StrictUseUnReturn <
41
+ T ,
42
+ R ,
43
+ D ,
44
+ O extends UseUnOptions < T > = UseUnOptions < T > ,
45
+ > extends UseUnReturn < T , R , D , O > {
36
46
/** 手动调用 */
37
47
execute : (
38
48
url ?: string | UnConfig < T , D > ,
39
49
config ?: UnConfig < T , D > ,
40
- ) => Promise < StrictUseUnReturn < T , R , D > > ;
50
+ ) => Promise < StrictUseUnReturn < T , R , D , O > > ;
41
51
}
42
52
export interface EasyUseUnReturn < T , R , D > extends UseUnReturn < T , R , D > {
43
53
/** 手动调用 */
@@ -46,7 +56,7 @@ export interface EasyUseUnReturn<T, R, D> extends UseUnReturn<T, R, D> {
46
56
config ?: UnConfig < T , D > ,
47
57
) => Promise < EasyUseUnReturn < T , R , D > > ;
48
58
}
49
- export interface UseUnOptions < T = UnData > {
59
+ export interface UseUnOptionsBase < T = UnData > {
50
60
/** 当 `useUn` 被调用时,是否自动发起请求 */
51
61
immediate ?: boolean ;
52
62
/**
@@ -61,8 +71,6 @@ export interface UseUnOptions<T = UnData> {
61
71
* @default true
62
72
*/
63
73
abortPrevious ?: boolean ;
64
- /** 在请求还未响应时使用的响应数据 */
65
- initialData ?: T ;
66
74
/**
67
75
* 是否在执行前将请求数据重置为 initialData
68
76
*
@@ -76,41 +84,94 @@ export interface UseUnOptions<T = UnData> {
76
84
/** 请求结束时调用 */
77
85
onFinish ?: ( ) => void ;
78
86
}
87
+ export interface UseUnOptionsWithInitialData < T > extends UseUnOptionsBase < T > {
88
+ /** 在请求还未响应时使用的响应数据 */
89
+ initialData : T ;
90
+ }
91
+ export type UseUnOptions < T = UnData > =
92
+ | UseUnOptionsBase < T >
93
+ | UseUnOptionsWithInitialData < T > ;
79
94
type OverallUseUnReturn < T , R , D > =
80
95
| StrictUseUnReturn < T , R , D >
81
96
| EasyUseUnReturn < T , R , D > ;
82
97
83
98
const isUnInstance = ( val : any ) =>
84
99
! ! val ?. request && ! ! val ?. download && ! ! val ?. upload ;
85
100
86
- export function useUn < T = UnData , R = UnResponse < T > , D = UnData > (
101
+ export function useUn <
102
+ T = UnData ,
103
+ R = UnResponse < T > ,
104
+ D = UnData ,
105
+ O extends UseUnOptionsWithInitialData < T > = UseUnOptionsWithInitialData < T > ,
106
+ > (
87
107
url : string ,
88
108
config ?: UnConfig < T , D > ,
89
- options ?: UseUnOptions < T > ,
90
- ) : StrictUseUnReturn < T , R , D > & Promise < StrictUseUnReturn < T , R , D > > ;
91
- export function useUn < T = any , R = UnResponse < T > , D = any > (
109
+ options ?: O ,
110
+ ) : StrictUseUnReturn < T , R , D , O > & Promise < StrictUseUnReturn < T , R , D , O > > ;
111
+ export function useUn <
112
+ T = UnData ,
113
+ R = UnResponse < T > ,
114
+ D = UnData ,
115
+ O extends UseUnOptionsWithInitialData < T > = UseUnOptionsWithInitialData < T > ,
116
+ > (
92
117
url : string ,
93
118
instance ?: UnInstance ,
94
- options ?: UseUnOptions < T > ,
95
- ) : StrictUseUnReturn < T , R , D > & Promise < StrictUseUnReturn < T , R , D > > ;
96
- export function useUn < T = any , R = UnResponse < T > , D = any > (
119
+ options ?: O ,
120
+ ) : StrictUseUnReturn < T , R , D , O > & Promise < StrictUseUnReturn < T , R , D , O > > ;
121
+ export function useUn <
122
+ T = UnData ,
123
+ R = UnResponse < T > ,
124
+ D = UnData ,
125
+ O extends UseUnOptionsWithInitialData < T > = UseUnOptionsWithInitialData < T > ,
126
+ > (
97
127
url : string ,
98
128
config : UnConfig < T , D > ,
99
129
instance : UnInstance ,
100
- options ?: UseUnOptions < T > ,
101
- ) : StrictUseUnReturn < T , R , D > & Promise < StrictUseUnReturn < T , R , D > > ;
102
- export function useUn < T = any , R = UnResponse < T > , D = any > (
130
+ options ?: O ,
131
+ ) : StrictUseUnReturn < T , R , D , O > & Promise < StrictUseUnReturn < T , R , D , O > > ;
132
+ export function useUn <
133
+ T = UnData ,
134
+ R = UnResponse < T > ,
135
+ D = UnData ,
136
+ O extends UseUnOptionsBase < T > = UseUnOptionsBase < T > ,
137
+ > (
138
+ url : string ,
139
+ config ?: UnConfig < T , D > ,
140
+ options ?: O ,
141
+ ) : StrictUseUnReturn < T , R , D , O > & Promise < StrictUseUnReturn < T , R , D , O > > ;
142
+ export function useUn <
143
+ T = UnData ,
144
+ R = UnResponse < T > ,
145
+ D = UnData ,
146
+ O extends UseUnOptionsBase < T > = UseUnOptionsBase < T > ,
147
+ > (
148
+ url : string ,
149
+ instance ?: UnInstance ,
150
+ options ?: O ,
151
+ ) : StrictUseUnReturn < T , R , D , O > & Promise < StrictUseUnReturn < T , R , D , O > > ;
152
+ export function useUn <
153
+ T = UnData ,
154
+ R = UnResponse < T > ,
155
+ D = UnData ,
156
+ O extends UseUnOptionsBase < T > = UseUnOptionsBase < T > ,
157
+ > (
158
+ url : string ,
159
+ config : UnConfig < T , D > ,
160
+ instance : UnInstance ,
161
+ options ?: O ,
162
+ ) : StrictUseUnReturn < T , R , D , O > & Promise < StrictUseUnReturn < T , R , D , O > > ;
163
+ export function useUn < T = UnData , R = UnResponse < T > , D = UnData > (
103
164
config ?: UnConfig < T , D > ,
104
165
) : EasyUseUnReturn < T , R , D > & Promise < EasyUseUnReturn < T , R , D > > ;
105
- export function useUn < T = any , R = UnResponse < T > , D = any > (
166
+ export function useUn < T = UnData , R = UnResponse < T > , D = UnData > (
106
167
instance ?: UnInstance ,
107
168
) : EasyUseUnReturn < T , R , D > & Promise < EasyUseUnReturn < T , R , D > > ;
108
- export function useUn < T = any , R = UnResponse < T > , D = any > (
169
+ export function useUn < T = UnData , R = UnResponse < T > , D = UnData > (
109
170
config ?: UnConfig < T , D > ,
110
171
instance ?: UnInstance ,
111
172
) : EasyUseUnReturn < T , R , D > & Promise < EasyUseUnReturn < T , R , D > > ;
112
173
113
- export function useUn < T = any , R = UnResponse < T > , D = any > (
174
+ export function useUn < T = UnData , R = UnResponse < T > , D = UnData > (
114
175
...args : any [ ]
115
176
) : OverallUseUnReturn < T , R , D > & Promise < OverallUseUnReturn < T , R , D > > {
116
177
const url : string | undefined =
@@ -144,14 +205,14 @@ export function useUn<T = any, R = UnResponse<T>, D = any>(
144
205
options = args . at ( - 1 ) || options ;
145
206
146
207
const {
147
- initialData,
148
208
shallow,
149
209
onSuccess = noop ,
150
210
onError = noop ,
151
211
immediate,
152
212
resetOnExecute = false ,
153
213
} = options ;
154
214
215
+ const initialData = ( options as UseUnOptionsWithInitialData < T > ) . initialData ;
155
216
const response = shallowRef < UnResponse < T , D > > ( ) ;
156
217
const data = ( shallow ? shallowRef : ref ) ( initialData ) as Ref < T | undefined > ;
157
218
const isFinished = ref ( false ) ;
0 commit comments