Typechecking error with using custom object as table index

Hello!

Basically I’m working on making an OOP typewriter object, however I have run into an issue where I’m getting typescript warnings when trying to use the typewriter object as an index inside of an internal table that houses events:

Is this a Roblox issue or am I overlooking something?

Script:

--!strict

local typeWriterOptions = require(script.Parent:WaitForChild('TypewriterOptions'))

local typeWriter = {}
typeWriter.__index = typeWriter
typeWriter._events = {}

type TypeWriter = typeof(setmetatable({
	['TextToBeWritten'] = '';
	['TypeWriterOptions'] = typeWriterOptions.new();
	['Playing'] = false;
	['Started'] = Instance.new('BindableEvent').Event;
	['Ended'] = Instance.new('BindableEvent').Event;
}, typeWriter))

type typeWriterOptions = typeof(typeWriterOptions.new())

function typeWriter.Play(self: TypeWriter)
	typeWriter._events[self].Started:Fire()
end

function typeWriter.Stop(self: TypeWriter)
	self.Playing = false
end

function typeWriter.Destroy(self: TypeWriter)
	for i,v in pairs(typeWriter._events[self]) do
		v:Destroy()
	end
end

function typeWriter.new(text: string, options: typeWriterOptions?): TypeWriter
	if not text then
		error('Couldn\'t create typewriter because no text was provided!')
	end
	local self = {}
	self.TextToBeWritten = text
	self.TypeWriterOptions = options
	self.Playing = false
	typeWriter._events[self] = {
		['Started'] = Instance.new('BindableEvent');
		['Ended'] = Instance.new('BindableEvent');
	}
	local eventsTable = typeWriter._events[self]
	self.Started = eventsTable.Started.Event
	self.Ended = eventsTable.Ended.Event
	self.Ended:Connect(function()
		self:Destroy()
	end)
	return setmetatable(self, typeWriter)
end

return typeWriter

TypeWriterOptions module:

local typeWriterOptions = {}

function typeWriterOptions.new()
	local info = {
		['TimeToWaitAfterTypewriterIsFinishedWriting'] = 1;
		['TimeToWaitBetweenGraphemes'] = 0.1;
	}
	return info
end

return typeWriterOptions