Closed tinymins closed 5 months ago
一方面是因为我希望大部分类是只读的这样好做类型检查,
另一方面是解决大量类的联合导致的补全性能问题:
如果存在一个函数用于构造一个表的基础数据 function f()end
, 如果多个实例都由这个函数构造:
local a = f()
local c = f()
按照以前简单的类型传递, 对a的所有修改会让c也有对应的提示:
a.a = 123
c. // 此时提示出a
这明显是更不合理的.
所以从0.7.7开始每一个local变量都有自己类型类型不再简单传递, 表达式类型成为他的关联类型, 在local变量上定义的方法归这个变量本身所有.
当然如果希望一个变量是另一个变量的延续, 可以为变量使用emmylua 声明其类型和引用其类型:
---@class SomeGlobal
SomeGlobal = {}
---@type SomeGlobal
local x = SomeGlobal
感谢!
按照您给的方式增加了---@type
问题已解决。
关于 一方面是因为我希望大部分类是只读的这样好做类型检查
,类确实是只读的,但是因为类过于庞大所以分了多个文件进行定义,类似C#的 PartialClass
。
降级到 0.7.6 恢复正常,0.7.7 和 0.8.0 自动补全都没了:
0.7.6
0.7.7、0.8.0