javascript - Typescript switch 语句执行错误情况?

标签 javascript angular typescript

如果有Stackblitz: the following typescript switch block即使过滤器为 false,它也会执行第一种情况(如下面的日志语句所示):

  public applyFilter(filter, completeTodos, incompleteTodos): Todo[] {
    console.log("FILTER VALUE: ", filter);
      console.log("IS THE FILTER TRUE?", filter == true);
    switch (filter) {
      case filter == true:
        console.log("Returning complete TODOS");
        return completeTodos;
        break;
      case filter == false:
        console.log("Returning incomplete TODOS");
        return incompleteTodos;
        break;
      default:
        console.log("Returning the Default");
        return completeTodos;
    }
  }

这是控制台记录的内容(可以在 stackblitz 链接中看到):

FILTER VALUE:
false
IS THE FILTER TRUE?
false
Returning complete TODOS

我有一种感觉,我错过了一些非常简单的东西,但同时这似乎是错误的......想法?

最佳答案

这不是编写 switch case 的方式。整个想法是打开动态值,然后让每个案例处理静态值。

switch (filter) {
  case true:
    console.log("Returning complete TODOS");
    return completeTodos;
  case false:
    console.log("Returning incomplete TODOS");
    return incompleteTodos;
  default:
    console.log("Returning the Default");
    return completeTodos;
}

break 语句也是多余的,因为您在它们之前返回。如果您想在 switch block 之后继续执行,则只需 break

此外,您的默认情况有点没有实际意义,因为 bool 要么是 true 要么是 false,除非您计划在某些情况下传递 undefined

关于javascript - Typescript switch 语句执行错误情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52614513/

相关文章:

javascript - 调整浏览器大小时更改占位符

javascript - 这个图书馆有办法显示世界地图吗?

javascript - Google 跟踪代码管理器 - 变量 - Javascript

html - 使用angular2上的按钮水平滚动

typescript - 将联合类型转换为交集类型

javascript - Angular 办公室织物 ui 表,获取选定的项目

Angular-Material2:垂直对齐文本和 md-icon 以匹配垂直样式?

css - 如何从 html 中删除主机组件标签

用于 es6 的 Angular Polyfill

node.js - Electron :主进程与渲染进程之间的竞争条件