ArrowFunction builds `(parameters): returnType => body`.
(af *ArrowFunction)
| 998 | |
| 999 | // ArrowFunction builds `(parameters): returnType => body`. |
| 1000 | func (b *Bindings) ArrowFunction(af *ArrowFunction) (*goja.Object, error) { |
| 1001 | afF, err := b.f("arrowFunction") |
| 1002 | if err != nil { |
| 1003 | return nil, err |
| 1004 | } |
| 1005 | params := make([]interface{}, 0, len(af.Parameters)) |
| 1006 | for _, p := range af.Parameters { |
| 1007 | v, err := b.Parameter(p) |
| 1008 | if err != nil { |
| 1009 | return nil, fmt.Errorf("arrow function parameter %q: %w", p.Name, err) |
| 1010 | } |
| 1011 | params = append(params, v) |
| 1012 | } |
| 1013 | var returnType goja.Value = goja.Undefined() |
| 1014 | if af.ReturnType != nil { |
| 1015 | returnType, err = b.ToTypescriptNode(af.ReturnType) |
| 1016 | if err != nil { |
| 1017 | return nil, fmt.Errorf("arrow function return type: %w", err) |
| 1018 | } |
| 1019 | } |
| 1020 | body, err := b.ToTypescriptNode(af.Body) |
| 1021 | if err != nil { |
| 1022 | return nil, fmt.Errorf("arrow function body: %w", err) |
| 1023 | } |
| 1024 | res, err := afF(goja.Undefined(), b.vm.NewArray(params...), returnType, body) |
| 1025 | if err != nil { |
| 1026 | return nil, xerrors.Errorf("call arrowFunction: %w", err) |
| 1027 | } |
| 1028 | return res.ToObject(b.vm), nil |
| 1029 | } |
| 1030 | |
| 1031 | // TypeQuery builds `typeof <name>` as a TypeNode. |
| 1032 | func (b *Bindings) TypeQuery(tq *TypeQuery) (*goja.Object, error) { |
no test coverage detected