You can use a constructor signature to enforce the fact that the constructor will return an instance compatible with the interface. You can use it either as a generic parameter constraint or directly as a parameter depending on what you need to do with the class:
interface MyInterface { foo: number }
class Class1 implements MyInterface { foo: number }
class Class2 { bar: number }
function doStuff0(classParameter: new (...args: any[]) => MyInterface) { }
doStuff0(Class1); // OK
doStuff0(Class2); // Error
function doStuff1<T extends new (...args: any[]) => MyInterface>(classParameter: T) { }
doStuff1(Class1); // OK
doStuff1(Class2); // Error
Note I added members to the example, don't forget Typescript uses a structural type system, so compatibility is determined by members not by implements MyInterface declaration, so any class would be compatible if MyInterface were empty, and a class would be compatible if it had a foo member even if it didn't explicitly declare implements MyInterface