go2ts

package
v0.0.0-...-e00d976 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 18, 2024 License: BSD-3-Clause Imports: 6 Imported by: 1

Documentation

Overview

Package go2ts is an extremely simple and powerful Go to TypeScript generator. It can handle all JSON serializable Go types and also has the ability to define TypeScript union types for your enum-like types.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Go2TS

type Go2TS struct {

	// GenerateNominalTypes tells Go2TS to generate nominal TypeScript types for aliased Go types.
	// For background on "nominal typing" in TypeScript, see
	// https://www.typescriptlang.org/play#example/nominal-typing and
	// https://basarat.gitbook.io/typescript/main-1/nominaltyping.
	// The TypeScript compiler itself uses this technique to achieve
	// a similar effect as with Go's type aliases:
	// https://github.com/Microsoft/TypeScript/blob/7b48a182c05ea4dea81bab73ecbbe9e013a79e99/src/compiler/types.ts#L693
	GenerateNominalTypes bool
	// contains filtered or unexported fields
}

Go2TS writes TypeScript definitions for Go types.

func New

func New() *Go2TS

New returns a new *Go2TS.

func (*Go2TS) Add

func (g *Go2TS) Add(v interface{})

Add a type that needs a TypeScript definition.

See AddToNamespace() for more details.

func (*Go2TS) AddIgnoreNil

func (g *Go2TS) AddIgnoreNil(v interface{})

AddIgnoreNil adds a type that needs a TypeScript definition.

See AddToNamespaceIgnoreNil() for more details.

func (*Go2TS) AddMultiple

func (g *Go2TS) AddMultiple(values ...interface{})

AddMultiple adds multiple types in a single call.

See AddMultipleToNamespace() for more details.

func (*Go2TS) AddMultipleToNamespace

func (g *Go2TS) AddMultipleToNamespace(namespace string, values ...interface{})

AddMultipleToNamespace adds multiple types to the given TypeScript namespace in a single call.

Will stop at the first type that fails.

func (*Go2TS) AddMultipleUnion

func (g *Go2TS) AddMultipleUnion(values ...interface{})

AddMultipleUnion adds multple union types.

See AddMultipleUnionToNamespace() for more details.

func (*Go2TS) AddMultipleUnionToNamespace

func (g *Go2TS) AddMultipleUnionToNamespace(namespace string, values ...interface{})

AddMultipleUnionToNamespace adds multple union types to the given TypeScript namespace.

Will stop at the first union type that fails.

func (*Go2TS) AddToNamespace

func (g *Go2TS) AddToNamespace(v interface{}, namespace string)

AddToNamespace adds a type that needs a TypeScript definition to the given TypeScript namespace.

See AddWithNameToNamespace() for more details.

func (*Go2TS) AddToNamespaceIgnoreNil

func (g *Go2TS) AddToNamespaceIgnoreNil(v interface{}, namespace string)

AddToNamespaceIgnoreNil adds a type that needs a TypeScript definition to the given TypeScript namespace.

See AddWithNameToNamespaceIgnoreNil() for more details.

func (*Go2TS) AddUnion

func (g *Go2TS) AddUnion(v interface{})

AddUnion adds a TypeScript definition for a union type of the values in 'v', which must be a slice or an array.

See AddUnionToNamespace() for more details.

func (*Go2TS) AddUnionToNamespace

func (g *Go2TS) AddUnionToNamespace(v interface{}, namespace string)

AddUnionToNamespace adds a TypeScript definition for a union type of the values in 'v', which must be a slice or an array, to the given TypeScript namespace.

See AddUnionWithNameToNamespace() for more details.

func (*Go2TS) AddUnionWithName

func (g *Go2TS) AddUnionWithName(v interface{}, typeName string)

AddUnionWithName adds a TypeScript definition for a union type of the values in 'v', which must be a slice or an array.

See AddUnionWithNameToNamespace() for more details.

func (*Go2TS) AddUnionWithNameToNamespace

func (g *Go2TS) AddUnionWithNameToNamespace(v interface{}, typeName, namespace string)

AddUnionWithNameToNamespace adds a TypeScript definition for a union type of the values in 'v', which must be a slice or an array, to the given namespace.

If typeName is the empty string then the name of type of elements in the slice or array is used as the type name, otherwise the typeName supplied will be used as the TypeScript type name.

func (*Go2TS) AddWithName

func (g *Go2TS) AddWithName(v interface{}, interfaceName string)

AddWithName adds a type that needs a TypeScript definition.

See AddWithNameToNamespace() for more details.

func (*Go2TS) AddWithNameIgnoreNil

func (g *Go2TS) AddWithNameIgnoreNil(v interface{}, interfaceName string)

AddWithNameIgnoreNil adds a type that needs a TypeScript definition.

See AddWithNameToNamespaceIgnoreNil() for more details.

func (*Go2TS) AddWithNameToNamespace

func (g *Go2TS) AddWithNameToNamespace(v interface{}, interfaceName, namespace string)

AddWithNameToNamespace adds a type that needs a TypeScript definition.

The value passed in can be an instance of a type, a reflect.Type, or a reflect.Value.

The 'name' supplied will be the TypeScript interface name. If 'interfaceName' is the empty string then the Go type name will be used. If the type is of a struct that is anonymous it will be given a name of the form "AnonymousN".

If the type is a struct, the fields of the struct will be named following the convention for json serialization, including using the json tag if supplied. Fields tagged with `json:",omitempty"` will be marked as optional.

There is special handling of time.Time types to be TypeScript "string"s since time.Time implements MarshalJSON, see https://pkg.go.dev/time?tab=doc#Time.MarshalJSON.

If namespace is non-empty, the type will be added inside a TypeScript namespace of that name.

func (*Go2TS) AddWithNameToNamespaceIgnoreNil

func (g *Go2TS) AddWithNameToNamespaceIgnoreNil(v interface{}, interfaceName, namespace string)

AddWithNameToNamespaceIgnoreNil adds a type that needs a TypeScript definition.

This method is identical to AddWithNameToNamespace, with the exception that any nillable values will be ignored (e.g. string slices will be treated as arrays, maps won't be nullable, etc.).

func (*Go2TS) Render

func (g *Go2TS) Render(w io.Writer) error

Render the TypeScript definitions to the given io.Writer.

Directories

Path Synopsis
Package typescript provides primitives to represent TypeScript types, and type declarations.
Package typescript provides primitives to represent TypeScript types, and type declarations.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL