如何基于映射键创建对象到对象中的类?

时间:2021-03-05 14:22:34

标签: javascript typescript

假设我们有以下情况:

class BaseClass {
    // ....some logic
}

class A extends BaseClass{

    name: string;

    constructor(name: string) {
        this.name = name
    }
    someMethodFromInside() {
       // ....some logic
    }
}

class B extends BaseClass {
    name: string;

    constructor(name: string) {
        this.name = name
    }
    someMethodFromInside() {
       // ....some logic
    }
}

然后我想根据我从外部获取的一些字符串值来选择我正在创建的类的哪个对象:

const someStringFromOutside = 'key1'

const obj: IHandler = {
     'key1': A,
     'key2': B
}

try {
    // here i would like to create object based on value in string choose to pick up class and create 
    // object
    new obj[someStringFromOutside]('somevariable').someMethodFromInside()
} catch(err) {
    ...some error handling
}

因为我是用 TypeScript 编写的,所以我还必须知道如何在处理程序中正确键入 interface: 我试图在接口中传递某种 ObjectConstructor 的值。但这是泛型和打字稿显示错误。

enum HandlerEvents {
    KEY_1 = 'key1',
    KEY_2 = 'key2'
}

interface IHandler {
     [key in HandlerEvents]: .....what should be here ?
}

0 个答案:

没有答案