【问题标题】:Typescript compiler not complaining about missing switch case [duplicate]打字稿编译器没有抱怨缺少开关盒[重复]
【发布时间】:2021-05-08 13:10:52
【问题描述】:

考虑以下代码:

  enum MyEnum {
    Enum1,
    Enum2
  }

  function switchOverEnum(myEnum: MyEnum) {
    switch (myEnum) {
      case MyEnum.Enum1:
        console.log('it is an enum1');
        break;
      // I am missing the case MyEnum.Enum2 here,
      // but the TypeScript compiler does not complain
    }
  }

我在使用create-react-app 创建的项目中使用它。我的期望是 TypeScript 抱怨 MyEnum.Enum2 的案例没有被处理,但它没有。我该如何配置 TypeScript 编译器来做到这一点?

【问题讨论】:

    标签: typescript switch-statement create-react-app tsconfig


    【解决方案1】:

    这样做

    
    enum MyEnum {
      Enum1,
      Enum2
    }
    
    function switchOverEnum(myEnum: MyEnum) {
      switch (myEnum) {
        case MyEnum.Enum1:
          console.log('it is an enum1');
          break;
       
        case MyEnum.Enum2:
          console.log('it is an enum2');
          break;
       
        default:
          const exhaustiveCheck: never = myEnum;
          throw new Error(`Unhandled Enum case: ${exhaustiveCheck}`);
      }
    
    }
    
    

    或者使用匿名函数

      default:
          ((x: never) => {
            throw new Error(`${x} was unhandled!`);
          })(c);
    

    看这里playground

    更多方式见here

    【讨论】:

      猜你喜欢
      • 2018-03-16
      • 1970-01-01
      • 2016-11-01
      • 2018-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-31
      相关资源
      最近更新 更多