In Typescript it is possible to define static interfaces and even reference them and pass the classes as objects to be used.

interface IInstance {}
 
interface IStaticClass {
  new (): IInstance
  start()
  show()
  end()
}
 
class StaticMembersClass implements IStaticClass {
  static start() {}
  static show() {}
  static end() {}
}
 
// in some code
function myFunction(staticClass: IStaticClass) {
  staticClass.start()
}
 
myFunction(StaticMembersClass)

Some more info: https://stackoverflow.com/a/43674389/147507