世の中には様々なプログラミング言語がありますが、モダンなものほど似通って感じます。一つの言語をベースにして、後は方言を書き換えるような具合で別な言語に移行できたりします。そうなると、一つの言語から自動でコンバートもできるのではないかと期待してしまいます。 その実装例として見てみたいのがTypeScriptToLuaです。名前の通り、TypeScriptで書かれたコードをLuaに変換します。

TypeScriptToLuaの使い方

コードの例です。TypeScriptで書いた例。

class A {
  private name: string;
  constructor() {
    this.name = '';
  }

  setName(name) {
    this.name = name;
  }

  hello() :string {
    return `Hello, ${this.name}`;
  }
}

const a = new A();
a.setName('MOONGIFT');
console.log(a.hello());

変換したコードです。

$ cat index.lua 
--[[ Generated with https://github.com/TypeScriptToLua/TypeScriptToLua ]]
require("lualib_bundle");
A = __TS__Class()
A.name = "A"
function A.prototype.____constructor(self)
    self.name = ""
end
function A.prototype.setName(self, name)
    self.name = name
end
function A.prototype.hello(self)
    return "Hello, " .. tostring(self.name)
end
a = __TS__New(A)
a:setName("MOONGIFT")
print(
    a:hello()
)

実行するとちゃんと同じ結果が返ってきます。

$ lua index.lua 
Hello, MOONGIFT

TypeScriptToLuaはシンプルなLuaのコードなので、理解するのも難しくなさそうです。Luaを学習する際に、まずTypeScriptで書いてみて、それをどうやってLuaで書くのか試してみるのもよさそうです。こうやって別言語に変換できると、よりTypeScriptを使おうという気にもなることでしょう。

TypeScriptToLuaはTypeScript製のオープンソース・ソフトウェア(MIT License)です。

TypeScriptToLua GitHub - TypeScriptToLua/TypeScriptToLua: Typescript to lua transpiler. https://typescripttolua.github.io/