【发布时间】:2022-12-17 01:02:27
【问题描述】:
我正在尝试使用泛型键入一个 Lua 函数,以便 Lsp(在本例中为 sumneko-lua)能够跟踪所有涉及的表的属性。目前我找不到办法,所以我很想在这里得到一些帮助。
让我写下我想要的最简单的例子:
local foo = { a = true }
local bar = { b = true }
-- merge is the function I'm trying to type
local fooBar = merge(foo, bar)
我希望 fooBar 的类型为 {a: boolean, b: boolean}。理想情况下,我希望该函数接受任意数量的表进行合并,但如果我必须编写一组固定重载来接受最多 X 个表合并,我会很好。
我尝试过但没有用的一些东西是:
---@generic T
---@generic A { [string]: T }
---@generic O { [string]: T }
---@param ... O|A
---@return O
function M.merge(...)
---Assigns the properties of one or more objects to another object
---@generic X
---@generic Y
---@generic A { [string]: X }
---@generic B { [string]: Y }
---@generic O { [string]: X | Y }
---@param a A
---@param b B
---@return O
function M.merge(a, b)
【问题讨论】: