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