接口中的TypeScript New()

Please, I have read this answer and this one.

但是,请考虑以下用例:

//Connection Type
interface Connection {
}

// Model class
class  BaseModel {
    created_at?: Date;
    updated_at?: Date;

    constructor(public connection?: Connection) {}
}

// Class that implements BaseModel
class  UserModel extends BaseModel {

    constructor() {super()}
}

// A factory function which takes type T that must extend BaseModel
 function Model<T extends BaseModel>(name: string) {
  return (target: { new (): T }) => {

  };                                          
}
//type of target in the anonymous function returned by Model function factory
interface OurTarget {
    new(): UserModel;
}

// this does not give error
var ourFunctionModel = Model("user");
// this does not give error
var userModel = new  UserModel();
// TS2345 not assignable error
ourFunctionModel(userModel);

在Model的匿名函数中,该函数接受目标为OurTarget类型的目标。 OurTarget为UserModel定义了一个new(),它扩展了BaseModel。为什么最后一行代码会抛出错误,并且给出了正确的类型?

Here is the code on TypeScript playground