我在Javascript中使用以下模式:
stash@{0}
我正在将代码库迁移到Typescript,我找不到实现相同功能的方法。我已经定义了一个var things = {
"blue": BlueThing,
"heavy": HeavyThing,
"imaginary": ImaginaryThing
};
var my_thing = things[thing_type]();
接口和相关的类。有没有办法实现这种动态实例化而不需要使用大Thing
语句?
答案 0 :(得分:0)
好的,我把它排除了。
使用构造函数接口模式,我现在有了这个:
interface ThingConstructor {
new (options: {[key: string]: string}) : Thing
}
interface Thing{
/* * */
}
function thingFactory(type: ThingConstructor) : Function{
return function(options) : Thing {
return new type(options)
}
}
--------
things: {[key: string]: Function}
--------
things["blue"] = thingFactory(BlueThing)
var my_thing = things[thing_type]({"stripes": "vertical"})