66
66
в версии v1.3.4 вариант определения как 'React.ReactNode' упразднен в определении типов
67
67
насиная с версии v1.3.5 вариант определения как 'React.ReactNode' будет упразднен технически
68
68
``` typescript
69
- // {ResponseType<T>} где 'T' это один из FetchType (значение передаваемое в пропс 'type'):
70
- // {AddressQueryMode} 'address' | {PartyQueryMode} 'party' | {BankQueryMode} |
71
- // {EmailQueryMode} 'email' | {FioQueryMode} 'fio' | {FmsUnitQueryMode} 'fms_unit';
69
+ import { SpecificQueryModeResponse , FetchType } from ' react-dadata-box' ;
70
+
71
+ // {SpecificQueryModeResponse<T>} где 'T' это один из FetchType (значение передаваемое в пропс 'type'):
72
+ // {AddressQueryMode} 'address' | {CountryQueryMode} 'country' | {PartyQueryMode} 'party' |
73
+ // {BankQueryMode} | {EmailQueryMode} 'email' | {FioQueryMode} 'fio' |
74
+ // {FmsUnitQueryMode} 'fms_unit';
72
75
// это определяет типизацию структуры соотв. ответа от DaData по специфическому type
73
- customActions ?: ((suggestions : SpecificQueryModeResponse <T >[]) => React .ReactNode );
76
+
77
+ // SpecificQueryModeResponse<FetchType> дженерик который выводит один из AbstractResponseType
78
+ // AbstractResponseType и любой их отдельных типов этого Union являются встроенными типами и могут быть импортированы под нужды описания типов из библиотеки
79
+ type AbstractResponseType = CountryResponseType | PartyResponseType | BankResponseType | EmailResponseType | FioResponseType | FmsUnitResponseType
80
+
81
+ // тип 'suggestions' будет выведен автоматически на основе установленного типа запроса (type property)
82
+ // и он будет являться SpecificQueryModeResponse<T>[] где 'T' соотв. (type property: FetchType)
83
+ customActions ?: ((suggestions : SpecificQueryModeResponse <FetchType >[]) => React .ReactNode );
74
84
```
75
85
at versions < v1.3.4
76
86
``` typescript
131
141
#### onChange ![ ] ( https://img.shields.io/badge/optional-green )
132
142
обработчик события выбора подсказки пользователем (клик по элементу в списке или Enter для элемента который в данный момент выделен), принимает объект отражающий выбранную 'подсказку' в качестве аргумента
133
143
``` typescript
134
- onChange ?: (suggestion : DadataSuggestion ) => void ;
144
+ import { SpecificQueryModeResponse , FetchType } from ' react-dadata-box' ;
145
+
146
+ // {SpecificQueryModeResponse<T>} где 'T' это один из FetchType (значение передаваемое в пропс 'type'):
147
+ // {AddressQueryMode} 'address' | {CountryQueryMode} 'country' | {PartyQueryMode} 'party' |
148
+ // {BankQueryMode} | {EmailQueryMode} 'email' | {FioQueryMode} 'fio' |
149
+ // {FmsUnitQueryMode} 'fms_unit';
150
+ // это определяет типизацию структуры соотв. ответа от DaData по специфическому type
151
+
152
+ // SpecificQueryModeResponse<FetchType> дженерик который выводит один из AbstractResponseType
153
+ // AbstractResponseType и любой их отдельных типов этого Union являются встроенными типами и могут быть импортированы под нужды описания типов из библиотеки
154
+ type AbstractResponseType = CountryResponseType | PartyResponseType | BankResponseType | EmailResponseType | FioResponseType | FmsUnitResponseType
155
+
156
+ // тип 'suggestion' будет выведен автоматически на основе установленного типа запроса (type property)
157
+ // и он будет являться SpecificQueryModeResponse<T>[] где 'T' соотв. (type property: FetchType)
158
+ onChange ?: (suggestion : SpecificQueryModeResponse <FetchType >) => void ;
135
159
```
136
160
___
137
161
#### onIdleOut ![ ] ( https://img.shields.io/badge/optional-green )
@@ -190,32 +214,38 @@ token: string;
190
214
```
191
215
___
192
216
#### type ![ ] ( https://img.shields.io/badge/optional-green ) ![ ] ( https://img.shields.io/badge/default-"address"-lightgrey )
193
- тип запрашиваемых "подсказок" (в терминологии сервиса DaData): 'address' (адреса), 'bank' (банки), 'email' (электронная почта), 'fio' (ФИО + определение пола), 'fms_unit' (отделение выдавшее паспорт РФ)
217
+ тип запрашиваемых "подсказок" (в терминологии сервиса DaData): 'address' (адреса), 'country' (страны), ' bank' (банки), 'email' (электронная почта), 'fio' (ФИО + определение пола), 'fms_unit' (отделение выдавшее паспорт РФ)
194
218
195
219
``` typescript
196
- type ?: ' address' | ' party' | ' bank' | ' email' | ' fio' | ' fms_unit' ;
220
+ type FetchType = AddressQueryMode | CountryQueryMode | PartyQueryMode | BankQueryMode | EmailQueryMode | FioQueryMode | FmsUnitQueryMode ;
221
+ // => 'address' (default) | 'country' | 'party' | 'bank' | 'email' | 'fio' | 'fms_unit'
222
+ type ?: FetchType ;
197
223
```
198
224
![ ] ( https://img.shields.io/badge/ATTENTION-red ) [ ![ ] ( https://img.shields.io/badge/TypeScript-types-blue?logo=typescript )] ( https://www.typescriptlang.org/ )
199
225
Для корректного вывода типов описывающих структуры которыми отвечает сервер DaData в соответствии с указанным типом сервиса (параметр ** type** ) -
200
226
необходимо передать этот тип (соотв. строку) как параметр дженерика.
201
227
202
228
* 'address'* является значение по умолчанию - и не требует явной установки
229
+
230
+ [ ![ ] ( https://img.shields.io/badge/CodeSandbox-playground-black?logo=codesandbox )] ( https://codesandbox.io/s/react-dadata-box-example-customactions-ox2li )
203
231
``` typescript
204
232
// н/п если мы используем сервис 'party'
205
- import { PartyResponseType } from ' react-dadata-box' ;
233
+ import { SpecificQueryModeResponse } from ' react-dadata-box' ;
206
234
...
207
235
// после установки 'party' как дженерик параметра компонента - обработчики такие как 'onChange' начинают типизироваться соотв.
208
236
// выводится тип (suggestion: PartyResponseType) => void в данном примере
209
237
< ReactDadataBox < ' party' >
210
238
token = {testToken }
211
239
type = ' party'
212
- onChange = {(suggestion: PartyResponseType ) => setSample2 (suggestion )}
240
+ // тип 'suggestion' будет выведен автоматически как SpecificQueryModeResponse<'party'>
241
+ onChange = {(suggestion) => setSample2(suggestion )}
242
+ // тип 'suggestion' будет выведен автоматически как SpecificQueryModeResponse<'party'>
213
243
customActions = {(suggestions) =>
214
- !suggestions.length && (
215
- <a href = " " onClick = {idleAction }>
216
- произвольное действие
217
- </a>
218
- )
244
+ !suggestions.length && (
245
+ <a href = " " onClick = {idleAction }>
246
+ произвольное действие
247
+ </a>
248
+ )
219
249
}
220
250
/ >
221
251
```
@@ -224,6 +254,7 @@ import { PartyResponseType } from 'react-dadata-box';
224
254
| ** type param** | ** built-in type** |
225
255
| ------------- | ------------- |
226
256
| 'address' | AddressResponseType (default) |
257
+ | 'country' | CountryResponseType |
227
258
| 'party' | PartyResponseType |
228
259
| 'bank' | BankResponseType |
229
260
| 'email' | EmailResponseType |
0 commit comments