Хорошая золотая середина - иметь карту от 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]
]);