From 765ae8cd2bd3e40dca2aa712dc431ef02454f6fb Mon Sep 17 00:00:00 2001 From: Lea Anthony Date: Fri, 30 Oct 2020 15:23:26 +1100 Subject: [PATCH] Typescript improvements --- .../build/internal/backendjs/package.template | 2 +- .../build/internal/backendjs/packages.go | 19 ++++++++++++ .../build/internal/backendjs/structs.go | 30 +++++++++++-------- 3 files changed, 38 insertions(+), 13 deletions(-) diff --git a/v2/pkg/commands/build/internal/backendjs/package.template b/v2/pkg/commands/build/internal/backendjs/package.template index 9964f347b..e97a6dcb8 100644 --- a/v2/pkg/commands/build/internal/backendjs/package.template +++ b/v2/pkg/commands/build/internal/backendjs/package.template @@ -12,6 +12,6 @@ * @returns {Promise} */ export function {{.Name}}({{.InputsAsJSText}}) { - return window.backend.{{$.Name}}.{{.Name}}(); + return window.backend.{{$.Name}}.{{.Name}}({{.InputsAsJSText}}); } {{end}} diff --git a/v2/pkg/commands/build/internal/backendjs/packages.go b/v2/pkg/commands/build/internal/backendjs/packages.go index 272722aea..8f45376e2 100644 --- a/v2/pkg/commands/build/internal/backendjs/packages.go +++ b/v2/pkg/commands/build/internal/backendjs/packages.go @@ -75,6 +75,25 @@ func parsePackages() ([]*Package, error) { }, }, }, + { + Name: "TwoInputsAndOutput", + Inputs: []*Parameter{ + { + Name: "name", + Type: reflect.String, + }, + { + Name: "age", + Type: reflect.Uint8, + }, + }, + Outputs: []*Parameter{ + { + Name: "result", + Type: reflect.Bool, + }, + }, + }, }, }) diff --git a/v2/pkg/commands/build/internal/backendjs/structs.go b/v2/pkg/commands/build/internal/backendjs/structs.go index a670143a9..1ec3e690e 100644 --- a/v2/pkg/commands/build/internal/backendjs/structs.go +++ b/v2/pkg/commands/build/internal/backendjs/structs.go @@ -8,8 +8,9 @@ import ( // Parameter defines a parameter used by a struct method type Parameter struct { - Name string - Type reflect.Kind + Name string + Type reflect.Kind + StructName string } // JSType returns the Javascript equivalent of the @@ -55,19 +56,24 @@ func (m *Method) InputsAsTSText() string { // formatted in a way acceptable to Javascript func (m *Method) OutputsAsTSText() string { - if len(m.Outputs) != 2 { - return "any" + if len(m.Outputs) == 0 { + return "void" } - jsType := goTypeToJS(m.Outputs[1].Type) - switch jsType { - case JsArray: - return "Array" - case JsObject: - return "any" - default: - return string(jsType) + var result []string + + for _, output := range m.Outputs { + jsType := goTypeToJS(output.Type) + switch jsType { + case JsArray: + result = append(result, "Array") + case JsObject: + result = append(result, "any") + default: + result = append(result, string(jsType)) + } } + return strings.Join(result, ", ") } // func generateStructFile() {