use of cz.habarta.typescript.generator.emitter.TsArrowFunction in project typescript-generator by vojtechhabarta.
the class JsonDeserializationExtension method createDeserializationGenericFunctionConstructor.
private static TsMethodModel createDeserializationGenericFunctionConstructor(SymbolTable symbolTable, TsModel tsModel, TsBeanModel bean) {
final Symbol beanIdentifier = symbolTable.getSymbol(bean.getOrigin());
List<TsType.GenericVariableType> typeParameters = getTypeParameters(bean.getOrigin());
final TsType.ReferenceType dataType = new TsType.GenericReferenceType(beanIdentifier, typeParameters);
final List<TsParameterModel> constructorFnOfParameters = getConstructorFnOfParameters(typeParameters);
final List<TsExpression> arguments = new ArrayList<>();
arguments.add(new TsIdentifierReference("data"));
for (TsParameterModel constructorFnOfParameter : constructorFnOfParameters) {
arguments.add(new TsIdentifierReference(constructorFnOfParameter.name));
}
final List<TsStatement> body = new ArrayList<>();
body.add(new TsReturnStatement(new TsArrowFunction(Arrays.asList(new TsParameter("data", null)), new TsCallExpression(new TsMemberExpression(new TsTypeReferenceExpression(new TsType.ReferenceType(beanIdentifier)), "fromData"), null, arguments))));
return new TsMethodModel("fromDataFn", TsModifierFlags.None.setStatic(), typeParameters, constructorFnOfParameters, new TsType.FunctionType(Arrays.asList(new TsParameter("data", dataType)), dataType), body, null);
}
Aggregations