2025年4月30日 著者 microsoft
TypeScriptをGoでネイティブ移植!開発状況と今後の展望
TypeScriptのネイティブポートがGoで開発中!気になる現状と今後の展開について解説します。
TypeScript-Goとは?
microsoft/typescript-go は、TypeScriptをGoでネイティブに実装するプロジェクトです。TypeScriptコンパイラ(tsc)をGoで書き直すことで、パフォーマンス向上とクロスプラットフォーム対応を目指しています。
- 現状は開発段階であり、製品版はまだリリースされていません。
- 興味のある開発者は、GitHubリポジトリからクローンしてローカルで実行できます。
開発状況:どこまで進んでいるの?
TypeScript-Goはまだ開発途上ですが、以下の機能はほぼ完了しています。
- プログラム作成:
lib
、target
などを読み込み同じファイルを認識。 - 構文解析: TypeScript 5.8と同じ構文エラーを表示。
- 型解決: TypeScript 5.8と同じ型を表示。
- 型チェック: TypeScript 5.8と同じ位置に同じエラーを表示。
現在開発中の機能は以下です。
- JavaScript固有の推論とJS Doc: 未対応
- JSX: 未対応
- 宣言の出力: 開発中
- 出力 (JS):
target: esnext
は概ねサポート - ウォッチモード: プロトタイプ版
まだ実装されていない機能もあります。
- ビルドモード / プロジェクト参照: 未対応
- インクリメンタルビルド: 未対応
- API: 未対応
試してみよう!ビルドと実行方法
TypeScript-Goを試すには、以下のツールが必要です。
- Go 1.24以上
- Node.js と npm
hereby
hereby build
実行後、built/local/tsgo
を実行できます。tsgo tsc [flags]
とすることで、tsc
と同様の動作をさせることが可能です。
LSPプロトタイプ体験
LSP (Language Server Protocol) のプロトタイプを体験してみましょう。
- VS Codeでリポジトリのワークスペースを開きます (
code .
)。 .vscode/launch.template.json
を.vscode/launch.json
にコピーします。F5
キーを押してデバッグを開始します。
正しく設定されていれば、出力ペインに"typescript-go"と表示されます。
TypeScript-Goの今後:マージ、そして…
TypeScript-Goの長期的な目標は、microsoft/TypeScript
リポジトリへのマージです。そのため、typescript-goのリポジトリとissueトラッカーは、最終的にはクローズされる予定です。
参加しよう!貢献方法
TypeScript-Goプロジェクトへの貢献も歓迎されています。コントリビューションを行うには、Contributor License Agreement (CLA)への同意が必要です。
主要キーワード
- TypeScript-Go
- TypeScript ネイティブ移植
- Go コンパイラ
- tsc Go
- TypeScript 開発状況
ロングテールキーワード
- TypeScript-Go ビルド方法
- TypeScript-Go LSP プロトタイプ
- TypeScript-Go 貢献
- TypeScript Go 言語サーバー
この記事が、TypeScript-Goプロジェクトの理解と貢献の一助となれば幸いです。