tygo

tygo

从Golang源文件生成Typescript类型,保留注释并支持常量

Tygo是一个用来将Golang源文件转化为Typescript类型的工具,能够自动保留注释,识别常量,并支持非结构体类型表达。适用于基于Golang REST API的前端代码,全面支持Golang 1.18的泛型和结构体继承。用户可以通过CLI或库模式进行配置和使用,轻松完成类型转换。

TygoGolangTypescript类型转换注释保留Github开源项目

tygo 项目介绍

项目概述

tygo 是一款工具,用于从 Golang(也是我们所熟知的 Go语言)源文件生成 Typescript 类型定义。这个工具运作流畅,只需简单操作便可实现类型定义的自动转换。它保留了注释信息,能够理解常量,并支持非结构体的 type 表达式。因此,tygo 是生成 Golang REST API 对应类型以在前端代码中使用的理想选择。值得一提的是,它支持 Golang 1.18 版本的泛型以及结构体继承。

安装

在命令行中执行以下命令即可安装 tygo:

go install github.com/gzuidhof/tygo@latest

使用示例

假设有一个 Golang 输入文件,其内容如下:

type UserRole = string const ( UserRoleDefault UserRole = "viewer" UserRoleEditor UserRole = "editor" ) type UserEntry struct { ID uuid.NullUUID `json:"id" tstype:"string | null"` Preferences map[string]struct { Foo uint32 `json:"foo"` Bar uuid.UUID `json:"bar"` } `json:"prefs"` Nickname string `json:"nickname,omitempty"` Role UserRole `json:"role"` unexported bool }

通过 tygo 转换后,生成的 Typescript 输出如下:

export type UserRole = string; export const UserRoleDefault: UserRole = "viewer"; export const UserRoleEditor: UserRole = "editor"; export interface UserEntry { id: string | null; prefs: { [key: string]: { foo: number; bar: any; }; }; nickname?: string; role: UserRole; }

用法

选项A:命令行接口使用(推荐)

用户需要创建一个 tygo.yaml 文件,该文件用于指定待转换的包以及可能需要添加的特殊类型映射。然后,通过运行以下命令生成 Typescript 定义:

tygo generate

生成的 Typescript 文件会被放在 Go 源文件相同的目录中。

选项B:库模式使用

用户可以在 Go 代码中配置 tygo.Config,并调用 Generate 方法生成 Typescript 类型。

配置文件示例

packages: - path: "github.com/my/package" output_path: "webapp/api/types.ts" indent: " " type_mappings: time.Time: "string" my.Type: "SomeType" frontmatter: | "import {SomeType} from "../lib/sometype.ts" exclude_files: - "private_stuff.go" extends: "SomeType"

类型提示及自定义映射

用户可以通过在结构体字段中使用 tstype 标签来指定其输出到 Typescript 文件中的类型。此外,还可以使用 tygo:emit 指令为无法直接用 Go 表示的类型生成对应的 Typescript 代码。

支持的特性

tygo 支持多种特性,包括字段的必需性和只读性、接口的继承、以及泛型等。用户可以通过 tstype 标签对指针类型字段进行标记以保证它们的必需性,或将字段设置为不可变,标记为只读字段等。

相关项目

tygo 项目与其他同类项目不同,它不依赖反射,因此能更好地保留代码中的注释和细节信息。其他类似项目如 typescriptify-golang-structsgo2ts 也各有优缺点,适合不同的使用场景。

许可证

tygo 项目采用 MIT 协议,用户可以自由使用和分发这个工具。

通过简单的配置和命令行操作,tygo 能够大大提高 Go 项目与 Typescript 项目间的数据交互效率,是开发人员的极佳辅助工具。

编辑推荐精选

Vora

Vora

免费创建高清无水印Sora视频

Vora是一个免费创建高清无水印Sora视频的AI工具

Refly.AI

Refly.AI

最适合小白的AI自动化工作流平台

无需编码,轻松生成可复用、可变现的AI自动化工作流

酷表ChatExcel

酷表ChatExcel

大模型驱动的Excel数据处理工具

基于大模型交互的表格处理系统,允许用户通过对话方式完成数据整理和可视化分析。系统采用机器学习算法解析用户指令,自动执行排序、公式计算和数据透视等操作,支持多种文件格式导入导出。数据处理响应速度保持在0.8秒以内,支持超过100万行数据的即时分析。

AI工具酷表ChatExcelAI智能客服AI营销产品使用教程
TRAE编程

TRAE编程

AI辅助编程,代码自动修复

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
AIWritePaper论文写作

AIWritePaper论文写作

AI论文写作指导平台

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

AI辅助写作AI工具AI论文工具论文写作智能生成大纲数据安全AI助手热门
博思AIPPT

博思AIPPT

AI一键生成PPT,就用博思AIPPT!

博思AIPPT,新一代的AI生成PPT平台,支持智能生成PPT、AI美化PPT、文本&链接生成PPT、导入Word/PDF/Markdown文档生成PPT等,内置海量精美PPT模板,涵盖商务、教育、科技等不同风格,同时针对每个页面提供多种版式,一键自适应切换,完美适配各种办公场景。

AI办公办公工具AI工具博思AIPPTAI生成PPT智能排版海量精品模板AI创作热门
潮际好麦

潮际好麦

AI赋能电商视觉革命,一站式智能商拍平台

潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。

iTerms

iTerms

企业专属的AI法律顾问

iTerms是法大大集团旗下法律子品牌,基于最先进的大语言模型(LLM)、专业的法律知识库和强大的智能体架构,帮助企业扫清合规障碍,筑牢风控防线,成为您企业专属的AI法律顾问。

SimilarWeb流量提升

SimilarWeb流量提升

稳定高效的流量提升解决方案,助力品牌曝光

稳定高效的流量提升解决方案,助力品牌曝光

Sora2视频免费生成

Sora2视频免费生成

最新版Sora2模型免费使用,一键生成无水印视频

最新版Sora2模型免费使用,一键生成无水印视频

下拉加载更多