Documentation
¶
Overview ¶
Package typescript builds TypeScript and TSX source from composable tokens. Package-level builders create token sequences and fluent methods append to them. Render writes readable token layout without formatting, compiling, or type-checking the output.
Index ¶
- func Render(w io.Writer, arg types.Token) error
- func TemplateExpr(expression types.Token) types.Token
- func TemplateText(value string) types.Token
- type Tokens
- func Abstract() *Tokens
- func Any() *Tokens
- func ArrayLiteral(values ...types.Token) *Tokens
- func ArrayType(element types.Token) *Tokens
- func Arrow() *Tokens
- func As() *Tokens
- func Async() *Tokens
- func Await() *Tokens
- func BigInt() *Tokens
- func Block(args ...types.Token) *Tokens
- func Boolean() *Tokens
- func Bracket(args ...types.Token) *Tokens
- func Break() *Tokens
- func Call(args ...types.Token) *Tokens
- func Case() *Tokens
- func Catch() *Tokens
- func Class() *Tokens
- func Colon() *Tokens
- func Comma() *Tokens
- func Comment(value string) *Tokens
- func Const() *Tokens
- func Constructor() *Tokens
- func Continue() *Tokens
- func Default() *Tokens
- func Do() *Tokens
- func Else() *Tokens
- func ElseIf() *Tokens
- func Export() *Tokens
- func ExportDefault(declaration types.Token) *Tokens
- func ExportFrom(module string, specifiers ...types.Token) *Tokens
- func ExportNames(specifiers ...types.Token) *Tokens
- func Extends() *Tokens
- func False() *Tokens
- func Finally() *Tokens
- func For() *Tokens
- func ForIn(name string, object types.Token) *Tokens
- func ForOf(name string, iterable types.Token) *Tokens
- func Function() *Tokens
- func ID(name string) *Tokens
- func If() *Tokens
- func Implements() *Tokens
- func Import(module string, clause ...types.Token) *Tokens
- func ImportNames(specifiers ...types.Token) *Tokens
- func ImportNamespace(alias, module string) *Tokens
- func ImportType(module string, clause ...types.Token) *Tokens
- func Index(index types.Token) *Tokens
- func Interface() *Tokens
- func Intersection(types ...types.Token) *Tokens
- func JSXAttribute(name, value string) *Tokens
- func JSXAttributeExpr(name string, expression types.Token) *Tokens
- func JSXBooleanAttribute(name string) *Tokens
- func JSXElement(tag types.Token, attributes []types.Token, children ...types.Token) *Tokens
- func JSXExpr(expression types.Token) *Tokens
- func JSXFragment(children ...types.Token) *Tokens
- func JSXSpreadAttribute(expression types.Token) *Tokens
- func JSXText(value string) *Tokens
- func KeyValue(key, value types.Token) *Tokens
- func Let() *Tokens
- func Line() *Tokens
- func List(args ...types.Token) *Tokens
- func MapType(key, value types.Token) *Tokens
- func Namespace() *Tokens
- func Never() *Tokens
- func New() *Tokens
- func NewCall(target types.Token, args ...types.Token) *Tokens
- func NonNull() *Tokens
- func Null() *Tokens
- func Number() *Tokens
- func ObjectLiteral(properties ...types.Token) *Tokens
- func ObjectType() *Tokens
- func Of() *Tokens
- func Op(op string) *Tokens
- func Optional() *Tokens
- func OptionalChain(name string) *Tokens
- func Override() *Tokens
- func Pkg(module string) *Tokens
- func Private() *Tokens
- func PromiseType(value types.Token) *Tokens
- func Protected() *Tokens
- func Public() *Tokens
- func Raw(source string) *Tokens
- func Readonly() *Tokens
- func RecordType(key, value types.Token) *Tokens
- func Return() *Tokens
- func Selector(name string) *Tokens
- func Semicolon() *Tokens
- func SetType(value types.Token) *Tokens
- func Spread() *Tokens
- func Static() *Tokens
- func String() *Tokens
- func Switch() *Tokens
- func Symbol() *Tokens
- func Template(parts ...types.Token) *Tokens
- func Text(value string) *Tokens
- func This() *Tokens
- func Throw() *Tokens
- func True() *Tokens
- func Try() *Tokens
- func Type() *Tokens
- func TypeArgs(args ...types.Token) *Tokens
- func Undefined() *Tokens
- func Union(types ...types.Token) *Tokens
- func Unknown() *Tokens
- func Var() *Tokens
- func Void() *Tokens
- func While() *Tokens
- func (v *Tokens) Abstract() *Tokens
- func (v *Tokens) Any() *Tokens
- func (v *Tokens) ArrayLiteral(values ...types.Token) *Tokens
- func (v *Tokens) ArrayType(element types.Token) *Tokens
- func (v *Tokens) Arrow() *Tokens
- func (v *Tokens) As() *Tokens
- func (v *Tokens) Async() *Tokens
- func (v *Tokens) Await() *Tokens
- func (v *Tokens) BigInt() *Tokens
- func (v *Tokens) Block(args ...types.Token) *Tokens
- func (v *Tokens) Boolean() *Tokens
- func (v *Tokens) Bracket(args ...types.Token) *Tokens
- func (v *Tokens) Break() *Tokens
- func (v *Tokens) Call(args ...types.Token) *Tokens
- func (v *Tokens) Case() *Tokens
- func (v *Tokens) Catch() *Tokens
- func (v *Tokens) Class() *Tokens
- func (v *Tokens) Colon() *Tokens
- func (v *Tokens) Comma() *Tokens
- func (v *Tokens) Comment(value string) *Tokens
- func (v *Tokens) Const() *Tokens
- func (v *Tokens) Constructor() *Tokens
- func (v *Tokens) Continue() *Tokens
- func (v *Tokens) Default() *Tokens
- func (v *Tokens) Do() *Tokens
- func (v *Tokens) Else() *Tokens
- func (v *Tokens) ElseIf() *Tokens
- func (v *Tokens) Export() *Tokens
- func (v *Tokens) ExportDefault(declaration types.Token) *Tokens
- func (v *Tokens) ExportFrom(module string, specifiers ...types.Token) *Tokens
- func (v *Tokens) ExportNames(specifiers ...types.Token) *Tokens
- func (v *Tokens) Extends() *Tokens
- func (v *Tokens) False() *Tokens
- func (v *Tokens) Finally() *Tokens
- func (v *Tokens) For() *Tokens
- func (v *Tokens) ForIn(name string, object types.Token) *Tokens
- func (v *Tokens) ForOf(name string, iterable types.Token) *Tokens
- func (v *Tokens) From(module string) *Tokens
- func (v *Tokens) Function() *Tokens
- func (v *Tokens) ID(name string) *Tokens
- func (v *Tokens) If() *Tokens
- func (v *Tokens) Implements() *Tokens
- func (v *Tokens) Import(module string, clause ...types.Token) *Tokens
- func (v *Tokens) ImportNames(specifiers ...types.Token) *Tokens
- func (v *Tokens) ImportNamespace(alias, module string) *Tokens
- func (v *Tokens) ImportType(module string, clause ...types.Token) *Tokens
- func (v *Tokens) Index(index types.Token) *Tokens
- func (v *Tokens) Interface() *Tokens
- func (v *Tokens) Intersection(types ...types.Token) *Tokens
- func (v *Tokens) JSXAttribute(name, value string) *Tokens
- func (v *Tokens) JSXAttributeExpr(name string, expression types.Token) *Tokens
- func (v *Tokens) JSXBooleanAttribute(name string) *Tokens
- func (v *Tokens) JSXElement(tag types.Token, attributes []types.Token, children ...types.Token) *Tokens
- func (v *Tokens) JSXExpr(expression types.Token) *Tokens
- func (v *Tokens) JSXFragment(children ...types.Token) *Tokens
- func (v *Tokens) JSXSpreadAttribute(expression types.Token) *Tokens
- func (v *Tokens) JSXText(value string) *Tokens
- func (v *Tokens) Join(args ...types.Token) *Tokens
- func (v *Tokens) KeyValue(key, value types.Token) *Tokens
- func (v *Tokens) Let() *Tokens
- func (v *Tokens) Line() *Tokens
- func (v *Tokens) List(args ...types.Token) *Tokens
- func (v *Tokens) MapType(key, value types.Token) *Tokens
- func (v *Tokens) Namespace() *Tokens
- func (v *Tokens) Never() *Tokens
- func (v *Tokens) New() *Tokens
- func (v *Tokens) NewCall(target types.Token, args ...types.Token) *Tokens
- func (v *Tokens) NonNull() *Tokens
- func (v *Tokens) Null() *Tokens
- func (v *Tokens) Number() *Tokens
- func (v *Tokens) ObjectLiteral(properties ...types.Token) *Tokens
- func (v *Tokens) ObjectType() *Tokens
- func (v *Tokens) Of() *Tokens
- func (v *Tokens) Op(op string) *Tokens
- func (v *Tokens) Optional() *Tokens
- func (v *Tokens) OptionalChain(name string) *Tokens
- func (v *Tokens) Override() *Tokens
- func (v *Tokens) Pkg(module string) *Tokens
- func (v *Tokens) Private() *Tokens
- func (v *Tokens) PromiseType(value types.Token) *Tokens
- func (v *Tokens) Protected() *Tokens
- func (v *Tokens) Public() *Tokens
- func (v *Tokens) Raw(source string) *Tokens
- func (v *Tokens) Readonly() *Tokens
- func (v *Tokens) RecordType(key, value types.Token) *Tokens
- func (v *Tokens) Render(w io.Writer) error
- func (v *Tokens) Return() *Tokens
- func (v *Tokens) Selector(name string) *Tokens
- func (v *Tokens) Semicolon() *Tokens
- func (v *Tokens) SetType(value types.Token) *Tokens
- func (v *Tokens) Spread() *Tokens
- func (v *Tokens) Static() *Tokens
- func (v *Tokens) String() *Tokens
- func (v *Tokens) Switch() *Tokens
- func (v *Tokens) Symbol() *Tokens
- func (v *Tokens) Template(parts ...types.Token) *Tokens
- func (v *Tokens) Text(value string) *Tokens
- func (v *Tokens) This() *Tokens
- func (v *Tokens) Throw() *Tokens
- func (v *Tokens) True() *Tokens
- func (v *Tokens) Try() *Tokens
- func (v *Tokens) Type() *Tokens
- func (v *Tokens) TypeArgs(args ...types.Token) *Tokens
- func (v *Tokens) Undefined() *Tokens
- func (v *Tokens) Union(types ...types.Token) *Tokens
- func (v *Tokens) Unknown() *Tokens
- func (v *Tokens) Unwrap() []types.Token
- func (v *Tokens) Var() *Tokens
- func (v *Tokens) Void() *Tokens
- func (v *Tokens) While() *Tokens
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Render ¶
Render writes arg to w without running a formatter or compiler.
Example ¶
package main
import (
"bytes"
"fmt"
ts "go.osspkg.com/gogen/typescript"
)
func main() {
file := ts.ExportDefault(
ts.Function().ID("Greeting").Bracket(
ts.ID("name").Colon().String(),
).Block(
ts.Return().Text("Hello, ").Op("+").ID("name").Semicolon(),
),
)
var source bytes.Buffer
if err := ts.Render(&source, file); err != nil {
fmt.Println(err)
return
}
fmt.Print(source.String())
}
Output: export default function Greeting(name: string) { return "Hello, " + name; }
func TemplateExpr ¶
TemplateExpr creates an interpolated template-string expression token.
func TemplateText ¶
TemplateText creates a token containing escaped template-string text.
Types ¶
type Tokens ¶
Tokens is a chainable sequence of TypeScript or TSX tokens.
func ArrayLiteral ¶
ArrayLiteral creates or appends an array literal.
func ExportDefault ¶
ExportDefault creates a default export declaration.
func ExportFrom ¶
ExportFrom creates a re-export declaration from a module.
func ExportNames ¶
ExportNames creates a named export declaration.
func Import ¶
Import creates an import declaration from a module.
Example ¶
package main
import (
"bytes"
"fmt"
ts "go.osspkg.com/gogen/typescript"
)
func main() {
userType := ts.Export().Type().ID("User").Op("=").Block(
ts.ID("id").Colon().String().Semicolon(),
ts.ID("name").Colon().String().Semicolon(),
).Semicolon()
file := ts.Import("node:fs/promises", ts.ImportNames(ts.ID("readFile"))).Line().Join(userType)
var source bytes.Buffer
if err := ts.Render(&source, file); err != nil {
fmt.Println(err)
return
}
fmt.Print(source.String())
}
Output: import { readFile } from "node:fs/promises"; export type User = { id: string; name: string; };
func ImportNames ¶
ImportNames creates a named import or export specifier list.
func ImportNamespace ¶
ImportNamespace creates a namespace import declaration.
func ImportType ¶
ImportType creates a type-only import declaration.
func Intersection ¶
Intersection creates an intersection type from its constituent types.
func JSXAttribute ¶
JSXAttribute creates a quoted and escaped TSX string attribute.
Example ¶
package main
import (
"bytes"
"fmt"
"go.osspkg.com/gogen/types"
ts "go.osspkg.com/gogen/typescript"
)
func main() {
node := ts.JSXElement(
ts.ID("button"),
[]types.Token{
ts.JSXAttribute("type", "button"),
ts.JSXAttributeExpr("disabled", ts.ID("isDisabled")),
ts.JSXSpreadAttribute(ts.ID("props")),
ts.JSXBooleanAttribute("autoFocus"),
},
ts.JSXText("Save "),
ts.JSXExpr(ts.ID("label")),
)
var source bytes.Buffer
if err := ts.Render(&source, node); err != nil {
fmt.Println(err)
return
}
fmt.Print(source.String())
}
Output: <button type="button" disabled={isDisabled} {...props} autoFocus>Save {label}</button>
func JSXAttributeExpr ¶
JSXAttributeExpr creates a TSX attribute containing an expression.
func JSXBooleanAttribute ¶
JSXBooleanAttribute creates a valueless TSX boolean attribute.
func JSXElement ¶
JSXElement creates a structural TSX element with attributes and children.
Example ¶
package main
import (
"bytes"
"fmt"
"go.osspkg.com/gogen/types"
ts "go.osspkg.com/gogen/typescript"
)
func main() {
component := ts.ExportDefault(
ts.Function().ID("Greeting").Bracket(
ts.ID("name").Colon().String(),
).Block(
ts.Return().Join(ts.JSXElement(
ts.ID("div"),
[]types.Token{ts.JSXAttribute("className", "greeting")},
ts.JSXText("Hello, "),
ts.JSXExpr(ts.ID("name")),
)),
),
)
var source bytes.Buffer
if err := ts.Render(&source, component); err != nil {
fmt.Println(err)
return
}
fmt.Print(source.String())
}
Output: export default function Greeting(name: string) { return <div className="greeting">Hello, {name}</div> }
func JSXFragment ¶
JSXFragment creates a TSX fragment containing child nodes.
func JSXSpreadAttribute ¶
JSXSpreadAttribute creates a TSX spread attribute from an expression.
func ObjectLiteral ¶
ObjectLiteral creates or appends a multiline object literal.
func OptionalChain ¶
OptionalChain appends an optional property selector.
func PromiseType ¶
PromiseType creates a Promise type from its resolved value type.
func RecordType ¶
RecordType creates a Record type from its key and value types.
func (*Tokens) ArrayLiteral ¶
ArrayLiteral creates or appends an array literal.
func (*Tokens) Constructor ¶
Constructor appends the constructor keyword.
func (*Tokens) ExportDefault ¶
ExportDefault creates a default export declaration.
func (*Tokens) ExportFrom ¶
ExportFrom creates a re-export declaration from a module.
func (*Tokens) ExportNames ¶
ExportNames creates a named export declaration.
func (*Tokens) Implements ¶
Implements appends the implements keyword.
func (*Tokens) ImportNames ¶
ImportNames creates a named import or export specifier list.
func (*Tokens) ImportNamespace ¶
ImportNamespace creates a namespace import declaration.
func (*Tokens) ImportType ¶
ImportType creates a type-only import declaration.
func (*Tokens) Intersection ¶
Intersection creates an intersection type from its constituent types.
func (*Tokens) JSXAttribute ¶
JSXAttribute creates a quoted and escaped TSX string attribute.
func (*Tokens) JSXAttributeExpr ¶
JSXAttributeExpr creates a TSX attribute containing an expression.
func (*Tokens) JSXBooleanAttribute ¶
JSXBooleanAttribute creates a valueless TSX boolean attribute.
func (*Tokens) JSXElement ¶
func (v *Tokens) JSXElement(tag types.Token, attributes []types.Token, children ...types.Token) *Tokens
JSXElement creates a structural TSX element with attributes and children.
func (*Tokens) JSXFragment ¶
JSXFragment creates a TSX fragment containing child nodes.
func (*Tokens) JSXSpreadAttribute ¶
JSXSpreadAttribute creates a TSX spread attribute from an expression.
func (*Tokens) ObjectLiteral ¶
ObjectLiteral creates or appends a multiline object literal.
func (*Tokens) ObjectType ¶
ObjectType appends the object type.
func (*Tokens) OptionalChain ¶
OptionalChain appends an optional property selector.
func (*Tokens) PromiseType ¶
PromiseType creates a Promise type from its resolved value type.
func (*Tokens) RecordType ¶
RecordType creates a Record type from its key and value types.