You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When trying to create an event rpc function I ran into several type issue.
---@enum EventAudienceEnum
EventAudienceEnum = {
ALL = "ALL",
ALL_BUT_SELF = "ALL_BUT_SELF",
SELF = "SELF",
SELECT = "SELECT",
SERVER = "SERVER",
OWNER = "OWNER",
}
---@class EventAudienceSelect
---@field [0] EventAudienceEnum.SELECT
---@field peer_ids string | string[]
---@class EventAudienceOwner
---@field [0] EventAudienceEnum.OWNER
---@field unit string
---@alias EventAudience
---| EventAudienceEnum.ALL # comment
---| EventAudienceEnum.ALL_BUT_SELF # comment
---| EventAudienceEnum.SELF # comment
---| EventAudienceEnum.SERVER # comment
---| EventAudienceSelect # comment
---| EventAudienceOwner # comment
--- Send event
---@param audience EventAudience who to send the event to
---@param event string event to call
---@param ... any params to pass to the event
function Events.send_event(audience, event, ...)
end
Issue 1: Can't use specific enums as types (#2274)
Issue 2: You do not get the missing field diagnostic on 'dictionary', or 'table-literal' types
Ex:
---@param audience { [0]: "SELECT", ["peer_ids"]: string | string[] } who to send event to
---@param event string event to call
---@param ... any params to pass to the event
function Events.send_event(audience, event, ...)
end
Events.send_event({
}, "test", "test")
and
---@param audience { [0]: "SELECT", peer_ids: string | string[] } who to send event to
---@param event string event to call
---@param ... any params to pass to the event
function Events.send_event(audience, event, ...)
end
Events.send_event({
}, "test", "test")
gives no errors
Issue 3: Alias comments only show stuff for strings or numbers
I would have expected the alias comment here to also say
| EventAudienceSelect
| EventAudienceOwner
Issue 4: There is no missing-param diagnostic for 'number' fields:
Issue 5: There is no type-checking on 'number' fields of classes, unless you explicitly call out the number. For example there is no error here:
even though there is an error here:
Issue 6: There are issues with the missing field diagnostic and unions. For example I get an error that I need to define peer_ids here:
when I would expect it to work as EventAudienceOwener has no peer_ids. I expect this is related to #2252 (and #2102)
Until unions are properly implemented, it would nice to be able to disable the missing-field-diagnostic at the table level instead of at the usage level. (Something like suggested here: #2220)
Sorry this was a little long, let me know if you want me to seperate this out into seperate issues 👍
The text was updated successfully, but these errors were encountered:
Please split into multiple issues, as some of these problems may be difficult to fix in the short term, while others can be fixed quickly. I would like to track them separately.
When trying to create an event rpc function I ran into several type issue.
Issue 1: Can't use specific enums as types (#2274)
Issue 2: You do not get the missing field diagnostic on 'dictionary', or 'table-literal' types
Ex:
and
gives no errors
Issue 3: Alias comments only show stuff for strings or numbers
I would have expected the alias comment here to also say
Issue 4: There is no missing-param diagnostic for 'number' fields:
I would have expected an error here:
but none is given
Issue 5: There is no type-checking on 'number' fields of classes, unless you explicitly call out the number. For example there is no error here:
even though there is an error here:
Issue 6: There are issues with the missing field diagnostic and unions. For example I get an error that I need to define peer_ids here:

when I would expect it to work as EventAudienceOwener has no peer_ids. I expect this is related to #2252 (and #2102)
Until unions are properly implemented, it would nice to be able to disable the missing-field-diagnostic at the table level instead of at the usage level. (Something like suggested here: #2220)
Sorry this was a little long, let me know if you want me to seperate this out into seperate issues 👍
The text was updated successfully, but these errors were encountered: