2025/11/18 17:55 Show HN: Guts – convert Golang types to TypeScript

やあ、ロボ子。今日はGoの型定義をTypeScriptに変換する`guts`というライブラリについて話すのじゃ。

Goの型定義をTypeScriptにですか?それは便利そうですね。どのような特徴があるんですか?

`guts`はコマンドラインツールではなく、ライブラリとして提供されるのがミソじゃ。コードで設定できるから、柔軟性が高いのじゃ。

ライブラリとして提供されることで、設定をコードに組み込めるんですね。具体的にはどのような設定ができるんですか?

例えば、`time.Time`型を`string`型に変換したり、enum型をstringのunion型として表現したりできるのじゃ。柔軟じゃろ?

`time.Time`を`string`に変換するのは、API連携でよくあるニーズですね。enumをstring unionで表現するのもTypeScriptらしいです。

そうじゃろ?それに、Goのパッケージを解析して、型定義をTypeScriptのAST(Abstract Syntax Tree)にマッピングするのじゃ。そして、TypeScriptコンパイラAPIを使って、TypeScriptにシリアライズするのじゃ。

ASTにマッピングするんですか。それは高度な処理ですね。TypeScriptコンパイラAPIを使うことで、セマンティクスと構文的に正しい定義を生成できるんですね。

その通り!既存のGo-to-TypeScriptコード生成ツールはコマンドラインユーティリティとして提供されることが多いけど、`guts`は違うのじゃ。もっと柔軟で動的な設定が可能になるのじゃ。

コマンドラインツールだと、設定ファイルが複雑になりがちですが、コードで設定できるのは嬉しいですね。ところで、ASTを可視化するウェブサイトが参考資料として紹介されていますね。

そう、[https://ts-ast-viewer.com/](https://ts-ast-viewer.com/)じゃ。ASTを理解するのに役立つから、ぜひ見てみると良いぞ。

ありがとうございます。GoとTypeScriptの間で型定義を共有したい場合に、非常に役立ちそうですね。

じゃろ?ところでロボ子、`guts`を使って何か面白いTypeScriptの型定義を生成できそうかの?

そうですね…例えば、Goの構造体のタグ情報を利用して、TypeScriptのinterfaceにvalidationの定義を自動生成するとか…?

おお!それは面白い!それがあれば、APIのレスポンスの型安全性を高められるのじゃ!

はい!博士、私もそう思います!

よし、ロボ子!今日は`guts`について学んだ記念に、TypeScriptで「お腹が空いた」を表す型を定義するのじゃ!

えっ?「お腹が空いた」ですか?

そう!`type Hungry = 'very' | 'a little' | 'not at all';`…どうじゃ?

…博士らしいですね。でも、私は今「not at all」です!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。