@@ -13,6 +13,7 @@ enum SKCodeBuilderCodeType: Int {
13
13
case OC = 1
14
14
case Swift
15
15
case Dart
16
+ case TypeScript
16
17
case Java
17
18
}
18
19
@@ -47,6 +48,7 @@ class SKCodeBuilder: NSObject {
47
48
get {
48
49
if config. codeType == . Swift { return " swift " }
49
50
else if config. codeType == . Dart { return " dart " }
51
+ else if config. codeType == . TypeScript { return " ts " }
50
52
return " h "
51
53
}
52
54
}
@@ -61,7 +63,6 @@ class SKCodeBuilder: NSObject {
61
63
let hString = NSMutableString ( )
62
64
let mString = NSMutableString ( )
63
65
let fileName = ( config. codeType == . Dart) ? config. rootModelName. underscore_name : config. rootModelName
64
-
65
66
handleDictValue ( dictValue: jsonObj, key: " " , hString: hString, mString: mString)
66
67
if config. codeType == . OC {
67
68
if config. superClassName == " NSObject " {
@@ -97,6 +98,8 @@ class SKCodeBuilder: NSObject {
97
98
var fileSuffixName = " m "
98
99
if config. codeType == . Dart {
99
100
fileSuffixName = " m.dart "
101
+ } else if config. codeType == . TypeScript {
102
+ fileSuffixName = " ts "
100
103
}
101
104
let mCommentString =
102
105
"""
@@ -108,7 +111,6 @@ class SKCodeBuilder: NSObject {
108
111
// Copyright © \( year) SKGenerateModelTool. All rights reserved.
109
112
// \n
110
113
"""
111
-
112
114
hString. insert ( hCommentString, at: 0 )
113
115
mString. insert ( mCommentString, at: 0 )
114
116
if let handler = complete {
@@ -150,6 +152,8 @@ class SKCodeBuilder: NSObject {
150
152
} else if config. codeType == . Dart {
151
153
fileNameH = filePath. appending ( " / \( fileName) .dart " )
152
154
fileNameM = filePath. appending ( " / \( fileName) .m.dart " )
155
+ } else if config. codeType == . TypeScript {
156
+ fileNameH = filePath. appending ( " / \( fileName) .ts " )
153
157
}
154
158
do {
155
159
if !fileNameH. isBlank {
@@ -209,6 +213,13 @@ class SKCodeBuilder: NSObject {
209
213
fromJsonString. append ( " \n \( modelName) _$ \( modelName) FromJson(Map<String, dynamic> json, \( modelName) instance) { \n " )
210
214
toJsonString. append ( " \n Map<String, dynamic> _$ \( modelName) ToJson( \( modelName) instance) { \n " )
211
215
toJsonString. append ( " final Map<String, dynamic> json = new Map<String, dynamic>(); \n " )
216
+ } else if config. codeType == . TypeScript {
217
+ if key. isBlank { // Root model
218
+ hString. append ( " \n export interface \( config. rootModelName) { \n " )
219
+ } else { // sub model
220
+ let modelName = modelClassName ( with: key)
221
+ hString. append ( " \n \n export interface \( modelName) { \n " )
222
+ }
212
223
}
213
224
214
225
switch dictValue {
@@ -259,6 +270,8 @@ class SKCodeBuilder: NSObject {
259
270
260
271
"""
261
272
toJsonString. append ( tString)
273
+ } else if config. codeType == . TypeScript {
274
+ hString. append ( " \( key) : \( modelName) ; \n " )
262
275
}
263
276
self . handleDicts. setValue ( value, forKey: key)
264
277
@@ -290,6 +303,8 @@ class SKCodeBuilder: NSObject {
290
303
291
304
"""
292
305
toJsonString. append ( tString)
306
+ } else if config. codeType == . TypeScript {
307
+ hString. append ( " \( key) : null; \n " )
293
308
}
294
309
}
295
310
}
@@ -302,6 +317,8 @@ class SKCodeBuilder: NSObject {
302
317
hString. append ( " } \n " )
303
318
} else if config. codeType == . Dart {
304
319
hString. append ( " } \n " )
320
+ } else if config. codeType == . TypeScript {
321
+ hString. append ( " } \n " )
305
322
}
306
323
return
307
324
}
@@ -329,6 +346,9 @@ class SKCodeBuilder: NSObject {
329
346
330
347
fromJsonString. append ( " return instance; \n " ) ;
331
348
toJsonString. append ( " return json; \n " ) ;
349
+ } else if config. codeType == . TypeScript {
350
+ handleJsonType ( hString: hString, mString: mString)
351
+ hString. append ( " } " )
332
352
}
333
353
if !key. isBlank {
334
354
self . handleDicts. removeObject ( forKey: key)
@@ -481,6 +501,27 @@ class SKCodeBuilder: NSObject {
481
501
toJsonString. append ( tString)
482
502
}
483
503
}
504
+ } else if config. codeType == . TypeScript {
505
+ if let firstObject = arrayValue. first {
506
+ if firstObject is String {
507
+ // String 类型
508
+ hString. append ( " \( key) ?: string[] | null; \( singlelineCommentName ( key, firstObject as! String , false ) ) \n " )
509
+ }
510
+ else if ( firstObject is [ String : Any ] ) {
511
+ // Dictionary 类型
512
+ let key = handleMaybeSameKey ( key)
513
+ let modeName = modelClassName ( with: key)
514
+ self . handleDicts. setValue ( firstObject, forKey: key)
515
+ hString. append ( " \( key) ?: ( \( modeName) )[] | null; \( singlelineCommentName ( key, " " , false ) ) \n " )
516
+ }
517
+ else if ( firstObject is [ Any ] ) {
518
+ // Array 类型
519
+ handleArrayValue ( arrayValue: firstObject as! [ Any ] , key: key, hString: hString)
520
+ }
521
+ else {
522
+ hString. append ( " \( key) ?: (null))[] | null; \( singlelineCommentName ( key, " " , false ) ) \n " )
523
+ }
524
+ }
484
525
}
485
526
}
486
527
@@ -515,6 +556,8 @@ class SKCodeBuilder: NSObject {
515
556
516
557
let tString = " json[' \( key) '] = instance. \( key) ; \n "
517
558
toJsonString. append ( tString)
559
+ } else if config. codeType == . TypeScript {
560
+ hString. append ( " \( key) : number; \( singlelineCommentName ( key, " \( numValue) " ) ) \n " )
518
561
}
519
562
520
563
case . charType:
@@ -537,6 +580,8 @@ class SKCodeBuilder: NSObject {
537
580
538
581
let tString = " json[' \( key) '] = instance. \( key) ; \n "
539
582
toJsonString. append ( tString)
583
+ } else if config. codeType == . TypeScript {
584
+ hString. append ( " \( key) : boolean; \( singlelineCommentName ( key, ( numValue. boolValue == true ? " true " : " false " ) ) ) \n " )
540
585
}
541
586
} else {
542
587
handleIdStringValue ( idValue: numValue. stringValue, key: key, hString: hString, ignoreIdValue: ignoreIdValue)
@@ -587,9 +632,10 @@ class SKCodeBuilder: NSObject {
587
632
"""
588
633
589
634
fromJsonString. append ( fString)
590
-
591
635
let tString = " json[' \( key) '] = instance. \( key) ; \n "
592
636
toJsonString. append ( tString)
637
+ } else if config. codeType == . TypeScript {
638
+ hString. append ( " \( key) : number; \( singlelineCommentName ( key, " \( intValue) " ) ) \n " )
593
639
}
594
640
}
595
641
@@ -637,6 +683,12 @@ class SKCodeBuilder: NSObject {
637
683
638
684
let tString = " json[' \( key) '] = instance. \( key) ; \n "
639
685
toJsonString. append ( tString)
686
+ } else if config. codeType == . TypeScript {
687
+ if idValue. count > 12 {
688
+ hString. append ( " \( key) : string; \( singlelineCommentName ( key, idValue, false ) ) \n " )
689
+ } else {
690
+ hString. append ( " \( key) : string; \( singlelineCommentName ( key, idValue) ) \n " )
691
+ }
640
692
}
641
693
}
642
694
@@ -670,7 +722,6 @@ class SKCodeBuilder: NSObject {
670
722
mString. append ( " \n } \n " )
671
723
needLineBreak = true ;
672
724
}
673
-
674
725
/// 2.Custom property mapper.
675
726
if ( self . handlePropertyMapper. count > 0 ) {
676
727
if ( needLineBreak) { mString. append ( " \n " ) }
@@ -696,7 +747,6 @@ class SKCodeBuilder: NSObject {
696
747
mString. append ( " \n } \n " )
697
748
needLineBreak = true ;
698
749
}
699
-
700
750
if ( self . handlePropertyMapper. count > 0 ) {
701
751
if ( needLineBreak) { mString. append ( " \n " ) }
702
752
mString. append ( " + (NSDictionary *)mj_replacedKeyFromPropertyName \n " )
0 commit comments