Cue + TypeScript
This package converts Cue types to TypeScript types, and soon vice-versa.
Cue is a concise language for defining types and constraints in one file. It's
best practice to have a single source of truth for your types. This package
allows you to convert your Cue types to TypeScript for the frontend.
Usage
This is a library for converting cue types, intended for use within a go
application. Run the following command to install the package:
go get github.com/inngest/cuetypescript
Examples
CUE | TypeScript |
#Post: {
id: string
slug: string
title: string
subtitle?: string
rating: float & <=5
category: "tech" | "finance" | "hr"
tags: [...string]
references: [...{
slug: string
title: string
}]
}
|
export const Category = {
TECH: "tech",
FINANCE: "finance",
HR: "hr",
} as const;
export type Category = typeof Category[keyof typeof Category];
export interface Post {
id: string;
slug: string;
title: string;
subtitle?: string;
rating: number;
category: Category;
tags: Array<string>;
references: Array<{
slug: string;
title: string;
}>;
};
|
Features
- Interface generation
- Type conversion and support
- Nested struct support
- Union support
- "Best practice" enum generation. We create enums with both
const
and type
values, allowing you to properly reference enum values via eg. Category.TECH
.
In the future, we plan on adding:
- Function generation for checking and validating Cue constraints
- Default value generation and constructors
- Typescript to Cue support