TypeScriptToLua 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
TypeScriptToLua 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
TypeScriptToLua 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」 !
TypeScriptToLua 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」「最积极运营项目」 !
TypeScriptToLua 获得 2020 年度 OSC 中国开源项目评选「最积极运营项目」 !
授权协议 MIT
操作系统 跨平台
软件类型 开源软件
所属分类 开发工具
开源组织
地区 不详
投 递 者 terenceyhj
适用人群 未知
收录时间 2021-04-21

软件简介

TypeScriptToLua 是将Typescript 转译到lua的转译器。

一个通用的TypeScript到Lua的编译器。在TypeScript中编写代码并发布Lua!

用Lua编写的大型项目会变得难以维护,而且很容易出错。而用TypeScript写代码则提高了可维护性、可读性和健壮性,还提供了良好的工具支持(包括ESLint、Prettier、Visual Studio code和WebStorm)。这个项目在任何接受Lua代码的环境中都很有用,它的强大功能是使用TypeScript声明文件来声明任何现有的API。

在线体验:https://typescripttolua.github.io/play/

示例

TypeScript 代码

// Declare exposed API
type Vector = [number, number, number];

declare function findUnitsInRadius(this: void, center: Vector, radius: number): Unit[];
declare interface Unit {
    isEnemy(other: Unit): boolean;
    kill(): void;
}


// Use declared API in code
function onAbilityCast(this: void, caster: Unit, targetLocation: Vector) {
    const units = findUnitsInRadius(targetLocation, 500);
    const enemies = units.filter(unit => caster.isEnemy(unit));

    for (const enemy of enemies) {
        enemy.kill();
    }
}

转换为 lua

--[[ Generated with https://github.com/TypeScriptToLua/TypeScriptToLua ]]
-- Lua Library inline imports
function __TS__ArrayFilter(arr, callbackfn)
    local result = {}
    do
        local i = 0
        while i < #arr do
            if callbackfn(_G, arr[i + 1], i, arr) then
                result[#result + 1] = arr[i + 1]
            end
            i = i + 1
        end
    end
    return result
end

function onAbilityCast(caster, targetLocation)
    local units = findUnitsInRadius(targetLocation, 500)
    local enemies = __TS__ArrayFilter(
        units,
        function(____, unit) return caster:isEnemy(unit) end
    )
    for ____, enemy in ipairs(enemies) do
        enemy:kill()
    end
end
展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (0)

加载中
更多评论
暂无内容
2020/12/04 08:27

技术周刊 · 前端的自我进化之路

前端开发不过是切图仔在那儿瞎鼓捣,没啥门槛,不需要懂计算机原理,不需要懂算法,微服务、高并发这些都不需要懂,拖组件写个页面就好了,数据、逻辑、测试都可以交给其他人去做……会这么想的人应该在冥王星断网很多年了吧,还不快来补补课。 登高远眺— 天高地迥,觉宇宙之无穷 基础技术 Chrome 发布 M87: 性能大幅提升 2020年11月17日,Chrome 发布 M87,这是今年的最后一个正式版本,Chrome 产品总监 Matt Waddell 在一篇博...

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
暂无内容
0 评论
3 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部