@qubit-ltd/common-decorator 3.8.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +1156 -0
  3. package/README.zh_CN.md +929 -0
  4. package/dist/common-decorator.cjs +6818 -0
  5. package/dist/common-decorator.cjs.map +1 -0
  6. package/dist/common-decorator.min.cjs +1 -0
  7. package/dist/common-decorator.min.cjs.map +1 -0
  8. package/dist/common-decorator.min.mjs +1 -0
  9. package/dist/common-decorator.min.mjs.map +1 -0
  10. package/dist/common-decorator.mjs +6792 -0
  11. package/dist/common-decorator.mjs.map +1 -0
  12. package/doc/api/DefaultAssignmentOptions.html +678 -0
  13. package/doc/api/DefaultOptions.html +954 -0
  14. package/doc/api/DefaultToJsonOptions.html +633 -0
  15. package/doc/api/Enum.html +1848 -0
  16. package/doc/api/Model.html +3607 -0
  17. package/doc/api/Page.html +1105 -0
  18. package/doc/api/fonts/OpenSans-Bold-webfont.eot +0 -0
  19. package/doc/api/fonts/OpenSans-Bold-webfont.svg +1838 -0
  20. package/doc/api/fonts/OpenSans-Bold-webfont.woff +0 -0
  21. package/doc/api/fonts/OpenSans-BoldItalic-webfont.eot +0 -0
  22. package/doc/api/fonts/OpenSans-BoldItalic-webfont.svg +1838 -0
  23. package/doc/api/fonts/OpenSans-BoldItalic-webfont.woff +0 -0
  24. package/doc/api/fonts/OpenSans-Italic-webfont.eot +0 -0
  25. package/doc/api/fonts/OpenSans-Italic-webfont.svg +1838 -0
  26. package/doc/api/fonts/OpenSans-Italic-webfont.woff +0 -0
  27. package/doc/api/fonts/OpenSans-Light-webfont.eot +0 -0
  28. package/doc/api/fonts/OpenSans-Light-webfont.svg +1839 -0
  29. package/doc/api/fonts/OpenSans-Light-webfont.woff +0 -0
  30. package/doc/api/fonts/OpenSans-LightItalic-webfont.eot +0 -0
  31. package/doc/api/fonts/OpenSans-LightItalic-webfont.svg +1843 -0
  32. package/doc/api/fonts/OpenSans-LightItalic-webfont.woff +0 -0
  33. package/doc/api/fonts/OpenSans-Regular-webfont.eot +0 -0
  34. package/doc/api/fonts/OpenSans-Regular-webfont.svg +1839 -0
  35. package/doc/api/fonts/OpenSans-Regular-webfont.woff +0 -0
  36. package/doc/api/fonts/OpenSans-Semibold-webfont.eot +0 -0
  37. package/doc/api/fonts/OpenSans-Semibold-webfont.svg +1838 -0
  38. package/doc/api/fonts/OpenSans-Semibold-webfont.ttf +0 -0
  39. package/doc/api/fonts/OpenSans-Semibold-webfont.woff +0 -0
  40. package/doc/api/fonts/OpenSans-SemiboldItalic-webfont.eot +0 -0
  41. package/doc/api/fonts/OpenSans-SemiboldItalic-webfont.svg +1838 -0
  42. package/doc/api/fonts/OpenSans-SemiboldItalic-webfont.ttf +0 -0
  43. package/doc/api/fonts/OpenSans-SemiboldItalic-webfont.woff +0 -0
  44. package/doc/api/global.html +6049 -0
  45. package/doc/api/index.html +1325 -0
  46. package/doc/api/scripts/linenumber.js +34 -0
  47. package/doc/api/scripts/prettify/Apache-License-2.0.txt +202 -0
  48. package/doc/api/scripts/prettify/lang-css.js +2 -0
  49. package/doc/api/scripts/prettify/prettify.js +28 -0
  50. package/doc/api/styles/jsdoc-default.css +699 -0
  51. package/doc/api/styles/prettify-jsdoc.css +120 -0
  52. package/doc/api/styles/prettify-tomorrow.css +141 -0
  53. package/doc/common-decorator.min.visualization.html +4949 -0
  54. package/doc/common-decorator.visualization.html +4949 -0
  55. package/package.json +107 -0
@@ -0,0 +1,678 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <title>DefaultAssignmentOptions - Documentation</title>
7
+
8
+ <script src="scripts/prettify/prettify.js"></script>
9
+ <script src="scripts/prettify/lang-css.js"></script>
10
+ <!--[if lt IE 9]>
11
+ <script src="https://cdn.bootcdn.net/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
12
+ <![endif]-->
13
+ <link type="text/css" rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/ionicons/2.0.1/css/ionicons.min.css">
14
+ <link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
15
+ <link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
16
+ </head>
17
+ <body>
18
+
19
+ <input type="checkbox" id="nav-trigger" class="nav-trigger" />
20
+ <label for="nav-trigger" class="navicon-button x">
21
+ <div class="navicon"></div>
22
+ </label>
23
+
24
+ <label for="nav-trigger" class="overlay"></label>
25
+
26
+ <nav>
27
+ <li class="nav-link nav-home-link"><a href="index.html">Home</a></li><li class="nav-heading">Classes</li><li class="nav-heading"><span class="nav-item-type type-class">C</span><span class="nav-item-name"><a href="DefaultAssignmentOptions.html">DefaultAssignmentOptions</a></span></li><li class="nav-heading"><span class="nav-item-type type-class">C</span><span class="nav-item-name"><a href="DefaultOptions.html">DefaultOptions</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="DefaultOptions.html#.get">get</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="DefaultOptions.html#.merge">merge</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="DefaultOptions.html#.reset">reset</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="DefaultOptions.html#.set">set</a></span></li><li class="nav-heading"><span class="nav-item-type type-class">C</span><span class="nav-item-name"><a href="DefaultToJsonOptions.html">DefaultToJsonOptions</a></span></li><li class="nav-heading"><span class="nav-item-type type-class">C</span><span class="nav-item-name"><a href="Page.html">Page</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Page.html#assign">assign</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Page.html#.getFrom">getFrom</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Page.html#.newEmpty">newEmpty</a></span></li><li class="nav-heading">Namespaces</li><li class="nav-heading"><span class="nav-item-type type-namespace">N</span><span class="nav-item-name"><a href="Enum.html">Enum</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Enum.html#.Class.has">Class.has</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Enum.html#.Class.hasCode">Class.hasCode</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Enum.html#.Class.hasName">Class.hasName</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Enum.html#.Class.hasValue">Class.hasValue</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Enum.html#.Class.of">Class.of</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Enum.html#.Class.ofCode">Class.ofCode</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Enum.html#.Class.ofName">Class.ofName</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Enum.html#.Class.ofValue">Class.ofValue</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Enum.html#.Class.values">Class.values</a></span></li><li class="nav-heading"><span class="nav-item-type type-namespace">N</span><span class="nav-item-name"><a href="Model.html">Model</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Model.html#assign">assign</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Model.html#clear">clear</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Model.html#clone">clone</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Model.html#equals">equals</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Model.html#generateId">generateId</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Model.html#isEmpty">isEmpty</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Model.html#normalize">normalize</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Model.html#normalizeField">normalizeField</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Model.html#toJSON">toJSON</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Model.html#toJsonString">toJsonString</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Model.html#validate">validate</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Model.html#validateField">validateField</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Model.html#.Class.create">Class.create</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Model.html#.Class.createArray">Class.createArray</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Model.html#.Class.createPage">Class.createPage</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Model.html#.Class.isNullishOrEmpty">Class.isNullishOrEmpty</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Model.html#.Class.parseJsonString">Class.parseJsonString</a></span></li><li class="nav-heading"><a href="global.html">Globals</a></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="global.html#ElementType">ElementType</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="global.html#Enumerable">Enumerable</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="global.html#Label">Label</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="global.html#NameField">NameField</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="global.html#NonEmpty">NonEmpty</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="global.html#NonEnumerable">NonEnumerable</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="global.html#Normalizable">Normalizable</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="global.html#Nullable">Nullable</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="global.html#Payload">Payload</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="global.html#Readonly">Readonly</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="global.html#Timeout">Timeout</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="global.html#Type">Type</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="global.html#Validatable">Validatable</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="global.html#assign">assign</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="global.html#create">create</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="global.html#createArray">createArray</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="global.html#createPage">createPage</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="global.html#defaultNormalizer">defaultNormalizer</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="global.html#defaultValidator">defaultValidator</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="global.html#enumNormalizer">enumNormalizer</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="global.html#isEnumClass">isEnumClass</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="global.html#isEnumerator">isEnumerator</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="global.html#isValidPageSource">isValidPageSource</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="global.html#normalize">normalize</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="global.html#stringifyId">stringifyId</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="global.html#toJSON">toJSON</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="global.html#toJsonString">toJsonString</a></span></li>
28
+ </nav>
29
+
30
+ <div id="main">
31
+
32
+ <h1 class="page-title">DefaultAssignmentOptions</h1>
33
+
34
+
35
+
36
+
37
+
38
+
39
+
40
+ <section>
41
+
42
+ <header>
43
+
44
+ <h2>
45
+ DefaultAssignmentOptions
46
+ </h2>
47
+
48
+ <div class="class-description"><p>The default options for the <code>Class.prototype.assign()</code>, <code>Class.create()</code>,
49
+ <code>Class.createArray()</code>, <code>Class.createPage()</code>, <code>Class.parseJsonString()</code>
50
+ methods of the class decorated by <code>@Model</code>.</p></div>
51
+
52
+
53
+ </header>
54
+
55
+ <article>
56
+ <div class="container-overview">
57
+
58
+
59
+ <div class="section-method">
60
+
61
+
62
+ <h2>Constructor</h2>
63
+
64
+
65
+
66
+ <h4 class="name" id="DefaultAssignmentOptions"><span class="type-signature"></span>new DefaultAssignmentOptions<span class="signature">()</span><span class="type-signature"></span></h4>
67
+
68
+
69
+
70
+
71
+
72
+
73
+
74
+
75
+
76
+
77
+ <dl class="details">
78
+
79
+
80
+
81
+
82
+
83
+
84
+
85
+
86
+
87
+
88
+
89
+
90
+
91
+
92
+
93
+
94
+
95
+
96
+ <dt class="tag-author">Author:</dt>
97
+ <dd class="tag-author">
98
+ <ul>
99
+ <li>Haixing Hu</li>
100
+ </ul>
101
+ </dd>
102
+
103
+
104
+
105
+
106
+
107
+
108
+
109
+
110
+
111
+
112
+
113
+
114
+
115
+
116
+
117
+ </dl>
118
+
119
+
120
+
121
+
122
+
123
+
124
+
125
+
126
+
127
+
128
+
129
+
130
+
131
+
132
+
133
+
134
+
135
+
136
+
137
+
138
+
139
+
140
+
141
+
142
+
143
+
144
+
145
+ </div>
146
+
147
+ </div>
148
+
149
+
150
+
151
+
152
+
153
+
154
+
155
+
156
+
157
+
158
+
159
+
160
+ <h3 class="subsection-title">Members</h3>
161
+
162
+
163
+
164
+ <div class="section-members">
165
+ <h4 class="name" id="convertNaming"><span class="type-signature"></span>convertNaming<span class="type-signature"> :boolean</span></h4>
166
+
167
+
168
+
169
+
170
+ <div class="description">
171
+ <p>Indicates whether to convert the naming style of the target object.</p>
172
+ <p>The default value of this option is <code>false</code>.</p>
173
+ </div>
174
+
175
+
176
+
177
+
178
+
179
+ <dl class="details">
180
+
181
+
182
+
183
+
184
+
185
+
186
+
187
+
188
+
189
+
190
+
191
+
192
+
193
+
194
+
195
+
196
+
197
+
198
+
199
+
200
+
201
+
202
+
203
+
204
+
205
+
206
+
207
+
208
+
209
+
210
+
211
+
212
+ </dl>
213
+
214
+
215
+
216
+ <h5>Type:</h5>
217
+ <ul>
218
+ <li>
219
+
220
+ <span class="param-type"><code>boolean</code></span>
221
+
222
+
223
+ </li>
224
+ </ul>
225
+
226
+
227
+
228
+
229
+
230
+ </div>
231
+
232
+
233
+
234
+ <div class="section-members">
235
+ <h4 class="name" id="elementTypes"><span class="type-signature"></span>elementTypes<span class="type-signature"> :object</span></h4>
236
+
237
+
238
+
239
+
240
+ <div class="description">
241
+ <p>The additional information about element types of fields of the target object.</p>
242
+ <p>The keys of this object are the path of the fields or sub-fields of the
243
+ target object, the values are the type of the fields, represented
244
+ as the constructor function of the type.</p>
245
+ <p>For example:</p>
246
+ <pre class="prettyprint source lang-js"><code>&#064;Model
247
+ class Child {
248
+ name = null;
249
+
250
+ credentials = [];
251
+ }
252
+
253
+ &#064;Model
254
+ class Foo {
255
+ id = null;
256
+
257
+ &#064;Type(Child)
258
+ child = null;
259
+ }
260
+ </code></pre>
261
+ <p>In this example, in order to assign a JSON object to an instance of <code>Foo</code>,
262
+ we could specify the type of the <code>Foo.id</code>, <code>Foo.child.name</code>, and
263
+ <code>Foo.child.credentials</code> as follows:</p>
264
+ <pre class="prettyprint source"><code>const foo = Foo.create(obj, {
265
+ types: {
266
+ 'Foo.id': Number,
267
+ 'Foo.child.name': String,
268
+ },
269
+ elementTypes: {
270
+ 'Foo.child.credential': Credential,
271
+ },
272
+ });
273
+ </code></pre>
274
+ <p>Note that the path of the fields or sub-fields of the target object should
275
+ include the class name of the target object.</p>
276
+ <p>The default value of this option is an empty object.</p>
277
+ </div>
278
+
279
+
280
+
281
+
282
+
283
+ <dl class="details">
284
+
285
+
286
+
287
+
288
+
289
+
290
+
291
+
292
+
293
+
294
+
295
+
296
+
297
+
298
+
299
+
300
+
301
+
302
+
303
+
304
+
305
+
306
+
307
+
308
+
309
+
310
+
311
+
312
+
313
+
314
+
315
+
316
+ </dl>
317
+
318
+
319
+
320
+ <h5>Type:</h5>
321
+ <ul>
322
+ <li>
323
+
324
+ <span class="param-type"><code>object</code></span>
325
+
326
+
327
+ </li>
328
+ </ul>
329
+
330
+
331
+
332
+
333
+
334
+ </div>
335
+
336
+
337
+
338
+ <div class="section-members">
339
+ <h4 class="name" id="normalize"><span class="type-signature"></span>normalize<span class="type-signature"> :boolean</span></h4>
340
+
341
+
342
+
343
+
344
+ <div class="description">
345
+ <p>Indicates whether to normalize this object after the assignment.</p>
346
+ <p>The default value of this option is <code>true</code>.</p>
347
+ </div>
348
+
349
+
350
+
351
+
352
+
353
+ <dl class="details">
354
+
355
+
356
+
357
+
358
+
359
+
360
+
361
+
362
+
363
+
364
+
365
+
366
+
367
+
368
+
369
+
370
+
371
+
372
+
373
+
374
+
375
+
376
+
377
+
378
+
379
+
380
+
381
+
382
+
383
+
384
+
385
+
386
+ </dl>
387
+
388
+
389
+
390
+ <h5>Type:</h5>
391
+ <ul>
392
+ <li>
393
+
394
+ <span class="param-type"><code>boolean</code></span>
395
+
396
+
397
+ </li>
398
+ </ul>
399
+
400
+
401
+
402
+
403
+
404
+ </div>
405
+
406
+
407
+
408
+ <div class="section-members">
409
+ <h4 class="name" id="sourceNamingStyle"><span class="type-signature"></span>sourceNamingStyle<span class="type-signature"> :string</span></h4>
410
+
411
+
412
+
413
+
414
+ <div class="description">
415
+ <p>The naming style of the source object, i.e., the first argument of the
416
+ <code>assign()</code> method.</p>
417
+ <p>The default value of this option is <code>LOWER_UNDERSCORE</code>.</p>
418
+ </div>
419
+
420
+
421
+
422
+
423
+
424
+ <dl class="details">
425
+
426
+
427
+
428
+
429
+
430
+
431
+
432
+
433
+
434
+
435
+
436
+
437
+
438
+
439
+
440
+
441
+
442
+
443
+
444
+
445
+
446
+
447
+
448
+
449
+
450
+
451
+
452
+
453
+
454
+
455
+
456
+
457
+ </dl>
458
+
459
+
460
+
461
+ <h5>Type:</h5>
462
+ <ul>
463
+ <li>
464
+
465
+ <span class="param-type"><code>string</code></span>
466
+
467
+
468
+ </li>
469
+ </ul>
470
+
471
+
472
+
473
+
474
+
475
+ </div>
476
+
477
+
478
+
479
+ <div class="section-members">
480
+ <h4 class="name" id="targetNamingStyle"><span class="type-signature"></span>targetNamingStyle<span class="type-signature"> :string</span></h4>
481
+
482
+
483
+
484
+
485
+ <div class="description">
486
+ <p>The naming style of the target object, i.e., the object calling the
487
+ <code>assign()</code> method.</p>
488
+ <p>The default value of this option is <code>LOWER_CAMEL</code>.</p>
489
+ </div>
490
+
491
+
492
+
493
+
494
+
495
+ <dl class="details">
496
+
497
+
498
+
499
+
500
+
501
+
502
+
503
+
504
+
505
+
506
+
507
+
508
+
509
+
510
+
511
+
512
+
513
+
514
+
515
+
516
+
517
+
518
+
519
+
520
+
521
+
522
+
523
+
524
+
525
+
526
+
527
+
528
+ </dl>
529
+
530
+
531
+
532
+ <h5>Type:</h5>
533
+ <ul>
534
+ <li>
535
+
536
+ <span class="param-type"><code>string</code></span>
537
+
538
+
539
+ </li>
540
+ </ul>
541
+
542
+
543
+
544
+
545
+
546
+ </div>
547
+
548
+
549
+
550
+ <div class="section-members">
551
+ <h4 class="name" id="types"><span class="type-signature"></span>types<span class="type-signature"> :object</span></h4>
552
+
553
+
554
+
555
+
556
+ <div class="description">
557
+ <p>The additional information about types of fields of classes.</p>
558
+ <p>The keys of this object are the path of the fields or sub-fields of the
559
+ target object, the values are the type of the fields, represented
560
+ as the constructor function of the type.</p>
561
+ <p>For example:</p>
562
+ <pre class="prettyprint source lang-js"><code>&#064;Model
563
+ class Child {
564
+ name = null;
565
+
566
+ credential = null;
567
+ }
568
+
569
+ &#064;Model
570
+ class Foo {
571
+ id = null;
572
+
573
+ &#064;Type(Child)
574
+ child = null;
575
+ }
576
+ </code></pre>
577
+ <p>In this example, in order to assign a JSON object to an instance of <code>Foo</code>,
578
+ we could specify the type of the <code>Foo.id</code>, <code>Foo.child.name</code>, and
579
+ <code>Foo.child.credential</code> as follows:</p>
580
+ <pre class="prettyprint source"><code>const foo = Foo.create(obj, {
581
+ types: {
582
+ 'Foo.id': Number,
583
+ 'Foo.child.name': String,
584
+ 'Foo.child.credential': Credential,
585
+ },
586
+ });
587
+ </code></pre>
588
+ <p>Note that the path of the fields or sub-fields of the target object should
589
+ include the class name of the target object.</p>
590
+ <p>The default value of this option is an empty object.</p>
591
+ </div>
592
+
593
+
594
+
595
+
596
+
597
+ <dl class="details">
598
+
599
+
600
+
601
+
602
+
603
+
604
+
605
+
606
+
607
+
608
+
609
+
610
+
611
+
612
+
613
+
614
+
615
+
616
+
617
+
618
+
619
+
620
+
621
+
622
+
623
+
624
+
625
+
626
+
627
+
628
+
629
+
630
+ </dl>
631
+
632
+
633
+
634
+ <h5>Type:</h5>
635
+ <ul>
636
+ <li>
637
+
638
+ <span class="param-type"><code>object</code></span>
639
+
640
+
641
+ </li>
642
+ </ul>
643
+
644
+
645
+
646
+
647
+
648
+ </div>
649
+
650
+
651
+
652
+
653
+
654
+
655
+
656
+
657
+
658
+ </article>
659
+
660
+ </section>
661
+
662
+
663
+
664
+
665
+ </div>
666
+
667
+ <br class="clear">
668
+
669
+ <footer>
670
+ Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.4</a>
671
+ on Mon Jan 06 2025 12:25:48 GMT+0800 (China Standard Time)
672
+ using the <a href="https://github.com/Haixing-Hu/jsdoc-minami">customized Minami theme</a>.
673
+ </footer>
674
+
675
+ <script>prettyPrint();</script>
676
+ <script src="scripts/linenumber.js"></script>
677
+ </body>
678
+ </html>