LuaHelper
LuaHelper copied to clipboard
多个文件对一个全局对象进行子属性函数声明操作后,使用处不能自动补全函数名
原始问题
存在一个全局对象,其子属性在不同文件中实现,属性自动补全不能按照预期弹出。
file Base.lua
local X = {}
function X.FunctionA()
end
_G.ExportNS = X
file Base.Part2.lua
local X = _G.ExportNS
function X.FunctionB()
end
file ui.lua
local X = _G.ExportNS
X. -- <- cannot infer X.FunctionB
最小复现

local A = {}
A.a = 1
local B = A
B.b = 2
A.
---@class AAA
local AAA = {}
AAA.aa = 1
---@class BBB
local BBB = AAA
BBB.bb = 2
---@type AAA | BBB
local CCC = AAA
CCC.
我能想到一个燃眉之急的解决方案,不知道适用不适用,利用声明的方式进行内容合并,曲线救国吧 @tinymins
```lua ---@class AAA local AAA = {} AAA.aa = 1 ---@class BBB local BBB = AAA BBB.bb = 2 ---@type AAA | BBB local CCC = AAA CCC.我能想到一个燃眉之急的解决方案,不知道适用不适用,利用声明的方式进行内容合并,曲线救国吧 @tinymins
😂实际上基础库对象由三十多个文件组成,这个曲线好像有点复杂,但是确实是个可以用的思路 https://github.com/tinymins/MY/tree/master/MY_!Base/src/lib
@kaishiqi 发现实际使用时候这么做并不好用,例如:
---@class AAA
local AAA = {}
AAA.aa = 1
function AAA.Output()
print(AAA.bb) -- <- 不能自动完成
end
---@class BBB
local BBB = AAA
BBB.bb = 2
---@type AAA | BBB
local CCC = AAA
CCC.
只有后声明的文件可以自动补全先声明的文件的子属性,但是不同文件之间的调用可能是交织着的。
