Skip to content

Exposing the entries of a custom map instead of its methods #617

@buschtoens

Description

@buschtoens

Since 4e76d88 any map type implementing methods will cause those methods to be exposed to JS, but not any of the map entries, to avoid ambiguity.

Now I'm in a scenario where I need the exact opposite behavior: all the map entries should be exposed as properties and none of the methods.

This could be solved with a customizable ToValue: #426

Would you prefer solving this issue via #426 or would you accept a PR with an alternative solution for this case specifically?

For instance, we could use "marker" interfaces:

type ExportEntries interface {
  GojaExportEntries()
}
type Foo map[string]string

// GojaExportEntries is used as a marker for goja to export the map entries instead of its methods.
func (_ Foo) GojaExportEntries() {}

// Without the above, the map would always be exported as an object with this method only.
func (f Foo) SomeMethod() {}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions