typescript - 以类作为参数并返回该类实例的函数的类型

标签 typescript

我有一个实例化函数,它返回所提供类的一个实例:

declare type ClassType = { new (): any }; // alias "ParameterlessConstructor"

function getInstance(constructor: ClassType): any {
    return new constructor();
}

我怎样才能使函数返回 constructor 参数的 instance 而不是 any,这样我就可以实现类型此功能的消费者安全吗?

最佳答案

好吧,这太简单了,我只需要绕过我自己的代码设置的界限。


关键是将构造函数参数指定为返回泛型类型的新类型,这是相同泛型类型TgetInstance 函数返回:

function getInstance<T>(constructor: { new (): T }): T {
    return new constructor();
}

这将产生正确的结果:

class Foo {
    public fooProp: string;
}

class Bar {
    public barProp: string;
}

var foo: Foo = getInstance(Foo); // OK
var bar: Foo = getInstance(Bar); // Error: Type 'Bar' is not assignable to type 'Foo'

关于typescript - 以类作为参数并返回该类实例的函数的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36500861/

相关文章:

angular - 如何创建一个新的Observable,它订阅了angular2中http.post方法返回的Observable?

typescript - 如何在 TypeScript 中实现 "ArrayLike"类?

typescript - 有没有一种方法可以优雅地键入对象文字的字段,而无需键入对象文字本身?

web-services - Angular 2 View 不显示来自 Web 服务的数据

arrays - Angular 2 - 从嵌套数组创建 CSV 文件

typescript - typescript 中的嵌套泛型

javascript - 在类型转换数组上使用 forEach 时遇到问题

css - 我在 HTML 中输入样式, "Inherited CSS"没有改变

node.js - 解压大小如何影响 npm 包的最小大小?

typescript - typescript 中的 Bluebird 和 es6 promises