Trouble with type checking

Before using luau’s type checking, it was hard to sometimes work with big objects that had a bunch of information because the intellisense didn’t always know what type it was supposed to be. When I discovered type annotation it became a lot easier to write code.

But it’s gotten to a point where I have multiple module scripts and I want to share types to both but it would cause a circular dependency. I’m not sure if it’s best to combine modules or have a separate module that stores types. Both modules are classes. One of them is to make a spaceship object while the other creates a “Path” object. The path object basically stores methods and info on a path that is being used to generate the spaceship.

I’m confused about if there is also a better way to go about this. It feels extreme to have another module to store types which I could just keep in my modules that have those objects. But I also do not want to combine modules as I’m afraid it will get too large and harder to maintain.

ReplicatedStorage
    Types
      SystemA
      SystemB
    Systems
      SystemA --// local types = require(ReplicatedStorage.Types.SystemA)
      SystemB --// local types = require(ReplicatedStorage.Types.SystemB)

Or one big module for every exported time