概要
- Teal はLuaの静的型付き方言で、TypeScriptのような役割を担う。
- 型アノテーションやジェネリクスなど、 拡張機能 をLuaに提供することが特徴。
- tlコンパイラ で.tlファイルを.luaに変換することが可能。
- インストールや開発支援ツール も充実している。
- MITライセンス でオープンソースとして公開されている。
Tealとは何か
- Teal は Lua の静的型付き方言であることを明示すること
- 型アノテーション による配列、マップ、レコード、インターフェース、ユニオン型、ジェネリクスの指定が可能であることを強調すること
- TypeScript がJavaScriptに与える役割と同様のニッチをLuaで担うことを目指すこと
- Luaのミニマリズム・移植性・組み込みやすさ を維持することを重視すること
- tlコンパイラ により.tlソースコードから.luaファイルへの変換を実現すること
Tealのコード例
- Tealコード は型アノテーションが明示的に記述できることを示すこと
- 例:
local function add(a: number, b: number): number形式で関数の引数と戻り値の型を指定することreturn a + b endで型安全な計算を実行することlocal s = add(1, 2)で型推論が働くことprint(s)で結果を出力すること
Tealの体験・プレイグラウンド
- Teal Playground を利用し、ブラウザ上でTealコンパイラを試すことが可能であること
- このページのソースコードを参考にすることもできること
- オンラインで Tealコード を編集・実行できることを確認すること
Tealのインストール方法
- LuaRocks を使用して
luarocks install tlコマンドでインストールすること - Linux・Windows用のバイナリ も提供されていること
- 大規模プロジェクトでは Cyan ビルドツールの利用を推奨すること
- Visual Studio Code 統合用の
vscode-tealや NeoVim 用のteal-language-serverなどの拡張機能が存在すること - 他にも各種エディタ・ツール連携が進んでいること
ドキュメント・学習資料
- Teal公式ドキュメント をオンラインで参照できること
- Luaと型システムの歴史やTealの動機・進捗に関する 講演動画 が複数公開されていること
- Minimalism versus types (2019)
- Minimalistic typed Lua is here (2020)
- What's next for Teal (2021)
- Five years of Teal: minimalism versus growth in language design (2024)
- What should Teal be? - musings on FOSS project directions (2025)
コミュニティ・開発体制
- GitHub 上で開発や議論が活発に行われていること
- GitHubフォーラム や Matrixチャット (#teal-language_community:gitter.im)でコミュニティ交流が可能であること
- Hisham Muhammad がプロジェクトを開始し、貢献者が増加中であること
- Teal自身の実装もTealで書かれている という特徴があること
ライセンス
- MITライセンス で公開されており、Luaと同じ自由度を持つこと
- オープンソースプロジェクト として自由に利用・改変・配布できること