javascript - 如何根据对象中类的映射键创建对象?
问题描述
假设我们有以下情况:
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 编写,所以我还必须知道如何在处理程序中正确键入接口:我试图通过某种 ObjectConstructor 来获取接口中的值。但这是通用的,打字稿向我显示错误。
enum HandlerEvents {
KEY_1 = 'key1',
KEY_2 = 'key2'
}
interface IHandler {
[key in HandlerEvents]: .....what should be here ?
}
解决方案
推荐阅读
- firebase - 从工具菜单中选择 Firebase 时,Firebase 助手显示错误
- java - 我的异步调用做错了什么?
- javascript - 如何在 Wordpress 中正确使用克隆主题
- python - 如何创建一个熊猫数据框数组,其特定列的值始终大于特定列 - 通过使用 np.random.randint
- r - Windows 上的 R 包检查问题:建议的包但不可用:'stringi'
- angular - 在 Angular 子组件中获取 Route 参数
- node.js - 节点中已删除文件的文件信息和文件时间戳,chokidar
- php - PHP:如何将记录从一个表复制到另一个但它必须复制到某个值
- php - Laravel 5.6 Ajax Post 500 内部服务器错误
- angular - 角度动画值已更改但不起作用