【发布时间】:2020-01-14 19:33:38
【问题描述】:
我在 TypeScript 中遇到 switch 语句的问题
在多个代码编辑器上尝试过,我正在尝试使用 switch (true),但由于某种原因,代码在 switch 语句中失败。
const todoList: string[] | null = [];
function pushItemToTodoList(item: string) {
//COMPILES!!
if (todoList !== undefined && todoList !== null && todoList.length) {
if (todoList.length >= 5) {
console.log("LIST IS FULL!");
}
}
//DOESN'T COPMILE!!
switch (true) {
case todoList !== undefined && todoList !== null && todoList.length:
if (todoList.length >= 5) { //todoList is null???
console.log("LIST IS FULL!");
}
break;
}
}
pushItemToTodoList("clean house");
【问题讨论】:
-
你得到的错误是什么?
-
我看不出使用 switch 有什么用,也不是你如何使用它。您可以解释您要达到的目标,以便得到解答。
-
@MarkusZeller 这有点像 hack,但它是有效的用法。由于您通常执行
switch (x),然后尝试将x匹配到每个case,您也可以传递true,然后期望每个case评估为true或false。理想情况下,您将拥有多个相互排斥的case语句。我不认为这是一种好的技术,但它是编写switch的一种可能方式。 -
@MarkusZeller 这不是 && 的工作方式:它永远不会到达那个块。它使用严格的平等,而不是真实性,它评估为一个数字(todoList.length)而不是布尔值
true。 -
@JaredSmith 或
todoList!.length >= 5
标签: javascript typescript