From 64a932752134833a666b5b52902bb5a46852f967 Mon Sep 17 00:00:00 2001 From: James Onnen Date: Wed, 2 Sep 2026 00:59:39 -0700 Subject: [PATCH] fix(player-mock): Give PlayerMockService its own type so callers do not need a cast CreatePlayer annotated its self parameter as PlayerMockServiceBase while the module table PlayerMockService itself carries no instance fields, so every call site had to launder the service through any to typecheck. Declare the module table as its own exported type intersected with the base, which keeps the inherited base methods resolving and lets serviceBag:GetService(PlayerMockService):CreatePlayer() typecheck directly. Types only, no runtime change. --- src/player-mock/src/Server/PlayerMockService.lua | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/player-mock/src/Server/PlayerMockService.lua b/src/player-mock/src/Server/PlayerMockService.lua index 5a0d4bd0a8..35c1b0d471 100644 --- a/src/player-mock/src/Server/PlayerMockService.lua +++ b/src/player-mock/src/Server/PlayerMockService.lua @@ -30,7 +30,11 @@ local Players = game:GetService("Players") local PlayerMock = require("PlayerMock") local PlayerMockServiceBase = require("PlayerMockServiceBase") -local PlayerMockService = setmetatable({}, { __index = PlayerMockServiceBase }) +export type PlayerMockService = PlayerMockServiceBase.PlayerMockServiceBase & { + CreatePlayer: (self: PlayerMockService, overrides: { [string]: any }?) -> Player, +} + +local PlayerMockService = (setmetatable({}, { __index = PlayerMockServiceBase }) :: any) :: PlayerMockService PlayerMockService.ServiceName = "PlayerMockService" PlayerMockService._consumedAttributeName = "PlayerMockConsumedServer" PlayerMockService._allowConcurrentConsumers = false @@ -44,10 +48,7 @@ PlayerMockService._allowConcurrentConsumers = false @param overrides { [string]: any }? -- Per-property seed values, e.g. `{ UserId = 12345 }` (see [PlayerMock.new]). @return Player ]=] -function PlayerMockService.CreatePlayer( - self: PlayerMockServiceBase.PlayerMockServiceBase, - overrides: { [string]: any }? -): Player +function PlayerMockService.CreatePlayer(self: PlayerMockService, overrides: { [string]: any }?): Player local player = PlayerMock.new(overrides) player.Parent = Players