typescripttolua(别名:tstl/ts2lua)


官网 typescripttolua.github.io

github https://github.com/TypeScriptToLua/TypeScriptToLua

用 TypeScript 编写代码并发布 Lua! 用 Lua 编写的大型项目会变得难以维护并且容易出错。在打字稿编写代码,而不是提高可维护性,可读性和可靠性,具备良好的好处的工具支持(包括ESLint,更漂亮,Visual Studio代码和WebStorm)。这个项目在任何接受 Lua 代码的环境中都很有用,它提供了一个强大的选项,即使用 TypeScript 声明文件简单地声明任何现有的 API。

注意事项

JavaScript 和 Lua 的不同之处在于它们对 true/false 的评估。

TypeScriptToLua 遵循 Lua 评估。

TypeScript JavaScript行为 Lua 行为
false false false
undefined false false
null false false
NaN false ⚠true
"" false ⚠true
0 false ⚠true
(其他一切) true true

松散相等

TypeScriptToLua在编译为 Lua 时在==和===之间没有区别

自我参数

默认情况下,所有函数都有一个self参数来保留 JavaScript 行为。 告诉 TypeScript 不允许this使用将从其包含的上下文中消除该参数。 其他解决方法也可用于删除它。 禁用这个 self 参数应该主要在为 Lua 互操作目的编写声明时完成。

this: void

这告诉 TypeScriptthis不能在此函数的上下文中使用。

*使用示例

function(this:void){

}

箭头函数

(this:void)=>{

}

@noSelf

如果您希望指定类、接口或命名空间中的所有函数都不应具有上下文参数,则可以使用@noSelf注释。

@noSelfInFile

如果要指定文件中的所有函数都没有上下文,可以@noSelfInFile在文件顶部使用。

通过索引获取数组里的值

lua的数组是从1开始的 ts的数组是从0开始的

通常情况下ts编译到lua时对数组的操作索引会自动+1

如果访问数组的0索引或访问数值不正确

请检查 数组的静态类型为数组 索引的静态类型为number(原理:如果数组或索引被识别为any任意类型 就不会自动+1了)