Typescript “如何修复”;类型';BaseCtor';不可分配给类型';T'&引用;使用带有默认参数的泛型时

Typescript “如何修复”;类型';BaseCtor';不可分配给类型';T'&引用;使用带有默认参数的泛型时,typescript,typescript-generics,Typescript,Typescript Generics,我正在尝试使用createInstance和泛型创建一个实例,如下所示。当我将两个参数传递给函数时,它工作得很好。如果函数在没有第二个参数Ctor的情况下调用,它将提供BaseCtor作为默认值。在本例中,它抛出一个错误,如“类型'BaseCtor'不可分配给类型'T'”。我应该怎么做来修正它是什么样的论点 class BaseCtor {} const createInstance = function createInstance<T extends BaseCtor>( o

我正在尝试使用createInstance和泛型创建一个实例,如下所示。当我将两个参数传递给函数时,它工作得很好。如果函数在没有第二个参数Ctor的情况下调用,它将提供BaseCtor作为默认值。在本例中,它抛出一个错误,如“类型'BaseCtor'不可分配给类型'T'”。我应该怎么做来修正它是什么样的论点

class BaseCtor {}
const createInstance = function createInstance<T extends BaseCtor>(
  options: object = {},
  Ctor: {new (): T} = BaseCtor
): T {
  return new Ctor();
}
class BaseCtor{}
const createInstance=函数createInstance(
选项:对象={},
Ctor:{new():T}=BaseCtor
):T{
返回新的Ctor();
}

您可能已经知道了这一点,但可能值得一试:

泛型函数的类型参数由调用者解析,而不是由实现者解析。此外,只要传递的参数符合此要求,就允许调用方使用尖括号中的显式类型手动指定此值。因此,以下所有方法都是调用
createInstance()
的有效方法:

类Foo扩展了BaseCtor{
prop=“我”;
}
const i1=createInstance({a:“好的”},Foo);//福
const i2=createInstance({a:“好的”},Foo);//福
const i3=createInstance({a:“好的”});//BaseCtor

const i4=createInstance({a:“好的”});//是啊!正如你所说,谢谢你的时间!