重构 switch 语句打字稿

罗希

有没有更好的方法在打字稿中编写 switch 语句?我在一个组件中有以下代码:

switch (actionType) {
    case Type.Cancel {
        this.cancel();
        break;
    }
    case Type.Discard {
        this.discard();
        break;
    }
    case Type.Delete {
        this.delete();
        break;
    }
}

我一直在阅读有关策略和/或工厂模式的信息,但这意味着为每种情况创建不同的类。就我而言,我不太确定这可能是最好的方法,但非常欢迎有关此主题的任何建议。

弗兰克·莫迪卡

一个很好的中间立场是从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]
  ]);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

条件重构中的 Switch 语句

来自分类Dev

将switch语句重构为多态代码

来自分类Dev

如何在 JSX 中重构 switch 语句

来自分类Dev

打字稿区分联合的switch语句的替代方法

来自分类Dev

如何重构这种类型的switch-case语句?

来自分类Dev

设计模式重构代码嵌套的if else和switch语句

来自分类Dev

在Java中重构大型switch语句的最佳方法是什么?

来自分类Dev

如何在 React 中重构 switch 语句的代码?

来自分类Dev

switch 对象创建重构

来自分类Dev

在打字稿中重构长函数

来自分类Dev

重构If语句

来自分类Dev

重构If语句

来自分类Dev

C#重构巨大的switch语句以使用LINQ进行订购

来自分类Dev

有没有办法重构C#特有的switch语句?

来自分类Dev

重构switch语句 - 使用对象VS基本数据类型

来自分类Dev

C#重构巨大的switch语句以使用LINQ进行订购

来自分类Dev

通过键||调用特定方法的最有效方法 重构方法调用switch语句

来自分类Dev

c# - 如何重构此 switch 语句以使用最少数量的代码行?

来自分类Dev

如何使用打字稿重构代码以遍历对象并做出反应?

来自分类Dev

重构冗余的if语句

来自分类Dev

在Java中重构if语句

来自分类Dev

重构重复if语句

来自分类Dev

如何重构嵌套的if语句

来自分类Dev

重构If / Else语句

来自分类Dev

重构If语句的最佳方法

来自分类Dev

重构if语句以删除冗余

来自分类Dev

使用Ramda重构if语句

来自分类Dev

Rails如果语句重构

来自分类Dev

重构大型条件语句