@@ -759,10 +759,10 @@ class TsGenerator : public BaseGenerator {
759
759
import.object_name = object_name;
760
760
import.bare_file_path = bare_file_path;
761
761
import.rel_file_path = rel_file_path;
762
- import.import_statement =
763
- " import { " + symbols_expression + " } from ' " + rel_file_path + " .js';" ;
764
- import.export_statement =
765
- " export { " + symbols_expression + " } from '. " + bare_file_path + " .js';" ;
762
+ import.import_statement = " import { " + symbols_expression + " } from ' " +
763
+ rel_file_path + " .js';" ;
764
+ import.export_statement = " export { " + symbols_expression + " } from '. " +
765
+ bare_file_path + " .js';" ;
766
766
import.dependency = &dependency;
767
767
import.dependent = &dependent;
768
768
@@ -903,7 +903,7 @@ class TsGenerator : public BaseGenerator {
903
903
const auto conversion_function = GenUnionConvFuncName (enum_def);
904
904
905
905
ret = " (() => {\n " ;
906
- ret += " let temp = " + conversion_function + " (this." +
906
+ ret += " const temp = " + conversion_function + " (this." +
907
907
namer_.Method (field_name, " Type" ) + " (), " +
908
908
field_binded_method + " );\n " ;
909
909
ret += " if(temp === null) { return null; }\n " ;
@@ -916,17 +916,17 @@ class TsGenerator : public BaseGenerator {
916
916
const auto conversion_function = GenUnionListConvFuncName (enum_def);
917
917
918
918
ret = " (() => {\n " ;
919
- ret += " let ret = [];\n " ;
919
+ ret += " const ret = [];\n " ;
920
920
ret += " for(let targetEnumIndex = 0; targetEnumIndex < this." +
921
921
namer_.Method (field_name, " TypeLength" ) + " ()" +
922
922
" ; "
923
923
" ++targetEnumIndex) {\n " ;
924
- ret += " let targetEnum = this." +
924
+ ret += " const targetEnum = this." +
925
925
namer_.Method (field_name, " Type" ) + " (targetEnumIndex);\n " ;
926
926
ret += " if(targetEnum === null || " + enum_type +
927
927
" [targetEnum!] === 'NONE') { "
928
928
" continue; }\n\n " ;
929
- ret += " let temp = " + conversion_function + " (targetEnum, " +
929
+ ret += " const temp = " + conversion_function + " (targetEnum, " +
930
930
field_binded_method + " , targetEnumIndex);\n " ;
931
931
ret += " if(temp === null) { continue; }\n " ;
932
932
ret += union_has_string ? " if(typeof temp === 'string') { "
@@ -1102,11 +1102,13 @@ class TsGenerator : public BaseGenerator {
1102
1102
switch (vectortype.base_type ) {
1103
1103
case BASE_TYPE_STRUCT: {
1104
1104
const auto &sd = *field.value .type .struct_def ;
1105
- field_type += GetTypeName (sd, /* object_api=*/ true );
1106
- ;
1105
+ const auto field_type_name =
1106
+ GetTypeName (sd, /* object_api=*/ true );
1107
+ field_type += field_type_name;
1107
1108
field_type += " )[]" ;
1108
1109
1109
- field_val = GenBBAccess () + " .createObjList(" +
1110
+ field_val = GenBBAccess () + " .createObjList<" + vectortypename +
1111
+ " , " + field_type_name + " >(" +
1110
1112
field_binded_method + " , this." +
1111
1113
namer_.Method (field, " Length" ) + " ())" ;
1112
1114
@@ -1128,7 +1130,7 @@ class TsGenerator : public BaseGenerator {
1128
1130
1129
1131
case BASE_TYPE_STRING: {
1130
1132
field_type += " string)[]" ;
1131
- field_val = GenBBAccess () + " .createScalarList(" +
1133
+ field_val = GenBBAccess () + " .createScalarList<string> (" +
1132
1134
field_binded_method + " , this." +
1133
1135
namer_.Field (field, " Length" ) + " ())" ;
1134
1136
field_offset_decl =
@@ -1162,9 +1164,9 @@ class TsGenerator : public BaseGenerator {
1162
1164
field_type += vectortypename;
1163
1165
}
1164
1166
field_type += " )[]" ;
1165
- field_val = GenBBAccess () + " .createScalarList( " +
1166
- field_binded_method + " , this. " +
1167
- namer_.Method (field, " Length" ) + " ())" ;
1167
+ field_val = GenBBAccess () + " .createScalarList< " +
1168
+ vectortypename + " >( " + field_binded_method +
1169
+ " , this. " + namer_.Method (field, " Length" ) + " ())" ;
1168
1170
1169
1171
field_offset_decl =
1170
1172
AddImport (imports, struct_def, struct_def).name + " ." +
@@ -1260,7 +1262,7 @@ class TsGenerator : public BaseGenerator {
1260
1262
obj_api_class = " \n " ;
1261
1263
obj_api_class += " export class " ;
1262
1264
obj_api_class += GetTypeName (struct_def, /* object_api=*/ true );
1263
- obj_api_class += " {\n " ;
1265
+ obj_api_class += " implements flatbuffers.IGeneratedObject {\n " ;
1264
1266
obj_api_class += constructor_func;
1265
1267
obj_api_class += pack_func_prototype + pack_func_offset_decl +
1266
1268
pack_func_create_call + " \n }" ;
@@ -1298,12 +1300,17 @@ class TsGenerator : public BaseGenerator {
1298
1300
}
1299
1301
1300
1302
const std::string object_name = GetTypeName (struct_def);
1303
+ const std::string object_api_name = GetTypeName (struct_def, true );
1301
1304
1302
1305
// Emit constructor
1303
1306
GenDocComment (struct_def.doc_comment , code_ptr);
1304
1307
code += " export class " ;
1305
1308
code += object_name;
1306
- code += " {\n " ;
1309
+ if (parser.opts .generate_object_based_api )
1310
+ code += " implements flatbuffers.IUnpackableObject<" + object_api_name +
1311
+ " > {\n " ;
1312
+ else
1313
+ code += " {\n " ;
1307
1314
code += " bb: flatbuffers.ByteBuffer|null = null;\n " ;
1308
1315
code += " bb_pos = 0;\n " ;
1309
1316
0 commit comments