为什么我总是在此处获取 Not all code paths return 值?
Why do I keep getting Not all code paths return a value here?
我想了解为什么我总是从打字稿中收到此错误。
PS。我知道在这种情况下我只会使用布尔值而不是创建函数,这个问题更多是关于打字稿的。
并非所有代码路径return一个值。
代码:
const isCompleted = (completed: boolean) => {
if(completed) {
return true
} else if(!completed) {
return false
}
}
当我这样做时,我没有收到错误,但无论如何我都不应该收到错误。
const isCompleted = (completed: boolean) => {
if(completed) {
return true
} else {
return false
}
}
原因是每次使用conditional,它都会将当前执行分支到两个可能的分支(代码路径)。
第一个条件 if (completed) {...}
分叉到您 return true
所在的路径和另一条路径(其余行)。下一个条件 else if (!completed) {...}
分叉成另外两条路径:一条是你 return false
,另一条是你永远不会 return 任何值(在 JavaScript 中,这隐含地 returns undefined
).
作为人类,您可以阅读代码并看到每个条件中的表达式都是相同的值:completed
(这是一个 boolean
,只能有两个状态),以及您了解代码没有其他可能的路径,但 TypeScript 编译器当前不会推断出这种相同的关系,因此您必须更明确地说明您使用条件创建的代码路径。
我想了解为什么我总是从打字稿中收到此错误。
PS。我知道在这种情况下我只会使用布尔值而不是创建函数,这个问题更多是关于打字稿的。
并非所有代码路径return一个值。
代码:
const isCompleted = (completed: boolean) => {
if(completed) {
return true
} else if(!completed) {
return false
}
}
当我这样做时,我没有收到错误,但无论如何我都不应该收到错误。
const isCompleted = (completed: boolean) => {
if(completed) {
return true
} else {
return false
}
}
原因是每次使用conditional,它都会将当前执行分支到两个可能的分支(代码路径)。
第一个条件 if (completed) {...}
分叉到您 return true
所在的路径和另一条路径(其余行)。下一个条件 else if (!completed) {...}
分叉成另外两条路径:一条是你 return false
,另一条是你永远不会 return 任何值(在 JavaScript 中,这隐含地 returns undefined
).
作为人类,您可以阅读代码并看到每个条件中的表达式都是相同的值:completed
(这是一个 boolean
,只能有两个状态),以及您了解代码没有其他可能的路径,但 TypeScript 编译器当前不会推断出这种相同的关系,因此您必须更明确地说明您使用条件创建的代码路径。