有没有更好的方法在Typescript中编写switch语句?我在组件中有以下代码:
switch (actionType) {
case Type.Cancel {
this.cancel();
break;
}
case Type.Discard {
this.discard();
break;
}
case Type.Delete {
this.delete();
break;
}
}
我一直在阅读有关策略和/或工厂模式的信息,但这将意味着为每种情况创建不同的类。就我而言,我不确定这是否是最好的方法,但是非常欢迎您提供有关此主题的任何建议。
答案 0 :(得分:0)
一个不错的中间立场是从Type
到函数的映射:
class Test {
private map = new Map<Type, () => void>([
[Type.Cancel, () => this.cancel()],
[Type.Discard, () => this.discard()],
[Type.Delete, () => this.delete()]
]);
yourMethod(actionType: Type) {
if (this.map.has(actionType)) {
this.map.get(actionType)();
}
}
}
如果方法已经绑定(使用箭头功能,bind
等),则可以简化如下操作:
private map = new Map<Type, () => void>([
[Type.Cancel, this.cancel],
[Type.Discard, this.discard],
[Type.Delete, this.delete]
]);