Issue:
Within Roblox Studio’s type-checking/script-analysis Players:GetPlayers()
does not return {[number]: Player}
and instead returns {[number]: Instance}
when Players
service is used as a variable. This can confuse developers as GetPlayers always returns Players, this also makes the type checker unaware of Player only functions that can be called on the variables associated with it.
Expected Behavior:
Make Players:GetPlayers()
stored as a variable return {[number]: Player}
in type-checking. When not stored as a variable script analysis works as intended.
Reproduction:
With the Players
service stored as a variable it creates a warning.
local Plrs: Players = game:GetService'Players'
for _:number, Plr:Player in ipairs(Plrs:GetPlayers())do
local Char: Model? = Plr.Character
if Char then
end
end
Work Around:
When not stored as a variable, the warning is hidden and script analysis knows the variable is a Player
instance.
for _:number, Plr:Player in ipairs(game:GetService'Players':GetPlayers())do
local Char: Model? = Plr.Character
if Char then
end
end
Attached Pictures: