我正在写一个类型工厂,根据字符串标识符吐出不同的类型,例如:
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');
有没有办法真正做到这一点?或者我是否必须以子类的方式为每种类型指定一个类?
感谢。
答案 0 :(得分:0)
为什么在只使用正确的类型创建类的新实例时,甚至可以使用getComponentClass函数。
const input = new InputComponent<string>("hello world");