如何在typescript中返回带泛型的类引用

时间:2017-03-29 06:33:20

标签: generics typescript

我正在写一个类型工厂,根据字符串标识符吐出不同的类型,例如:

export class InputComponent<T> {
    constructor(public value: T) {
    }
}

export const getComponentClass = (identifier: string) => {
    switch (identifier) {
        case 'textarea':
            return Textarea;
        case 'input:number':
            // here to return InputComponent<number>
        case 'input:binary':
            return Radio;
        case 'input:string':
        default:
            // here I want to return something like InputComponent<string>
    }
}

然后我会像使用它一样(非常简单的例子来说明我希望事情发生的方式,在我们使用ComponentFactoryResolver来创建动态组件的真实项目中)

const classdef = getComponentClass('input:text');
const input = new classdef('hello, world');

有没有办法真正做到这一点?或者我是否必须以子类的方式为每种类型指定一个类?

感谢。

1 个答案:

答案 0 :(得分:0)

为什么在只使用正确的类型创建类的新实例时,甚至可以使用getComponentClass函数。

const input = new InputComponent<string>("hello world");