打字稿编译器没有抱怨缺少 switch case

时间:2021-05-08 13:10:52

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

考虑以下代码:

  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 编译器来这样做?

1 个答案:

答案 0 :(得分:1)

这样做

const filter = [{"fieldName":"userid","fieldValue":"12345"},{"fieldName":"username","fieldValue":"myname"}];

const filterOut = Object.fromEntries(
  filter.map(o => [o.fieldName, o.fieldValue])
);

console.log(filterOut);

或者使用匿名函数


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}`);
  }

}

看这里playground

更多方式见here