TypeScriptToLua是将Typescript转译到lua的转译器。
一个通用的TypeScript到Lua的编译器。在TypeScript中编写代码并发布Lua!
用Lua编写的大型项目会变得难以维护,而且很容易出错。而用TypeScript写代码则提高了可维护性、可读性和健壮性,还提供了良好的工具支持(包括ESLint、Prettier、VisualStudiocode和WebStorm)。这个项目在任何接受Lua代码的环境中都很有用,它的强大功能是使用TypeScript声明文件来声明任何现有的API。
在线体验:https://typescripttolua.github.io/play/
示例
TypeScript代码
//DeclareexposedAPItypeVector=[number,number,number];declarefunctionfindUnitsInRadius(this:void,center:Vector,radius:number):Unit[];declareinterfaceUnit{isEnemy(other:Unit):boolean;kill():void;}//UsedeclaredAPIincodefunctiononAbilityCast(this:void,caster:Unit,targetLocation:Vector){constunits=findUnitsInRadius(targetLocation,500);constenemies=units.filter(unit=>caster.isEnemy(unit));for(constenemyofenemies){enemy.kill();}}转换为lua
--[[Generatedwithhttps://github.com/TypeScriptToLua/TypeScriptToLua]]--LuaLibraryinlineimportsfunction__TS__ArrayFilter(arr,callbackfn)localresult={}dolocali=0whilei<#arrdoifcallbackfn(_G,arr[i+1],i,arr)thenresult[#result+1]=arr[i+1]endi=i+1endendreturnresultendfunctiononAbilityCast(caster,targetLocation)localunits=findUnitsInRadius(targetLocation,500)localenemies=__TS__ArrayFilter(units,function(____,unit)returncaster:isEnemy(unit)end)for____,enemyinipairs(enemies)doenemy:kill()endend
评论