github https://github.com/TypeScriptToLua/TypeScriptToLua
用 TypeScript 编写代码并发布 Lua! 用 Lua 编写的大型项目会变得难以维护并且容易出错。在打字稿编写代码,而不是提高可维护性,可读性和可靠性,具备良好的好处的工具支持(包括ESLint,更漂亮,Visual Studio代码和WebStorm)。这个项目在任何接受 Lua 代码的环境中都很有用,它提供了一个强大的选项,即使用 TypeScript 声明文件简单地声明任何现有的 API。
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 互操作目的编写声明时完成。
这告诉 TypeScriptthis不能在此函数的上下文中使用。
*使用示例
function(this:void){
}
箭头函数
(this:void)=>{
}
如果您希望指定类、接口或命名空间中的所有函数都不应具有上下文参数,则可以使用@noSelf注释。
如果要指定文件中的所有函数都没有上下文,可以@noSelfInFile在文件顶部使用。
lua的数组是从1开始的 ts的数组是从0开始的
通常情况下ts编译到lua时对数组的操作索引会自动+1
如果访问数组的0索引或访问数值不正确
请检查 数组的静态类型为数组 索引的静态类型为number(原理:如果数组或索引被识别为any任意类型 就不会自动+1了)