基于布尔参数的不同返回类型

时间:2019-10-09 08:01:33

标签: typescript

我知道有一些相似的问题,但是我还没有看到解决方案。

type ID = string
type MaybeID = ID | null

const defaultBranchId: ID = "1"
const currentBranchId: MaybeID = null

export function useBranchFilter1(withDefaultBranch = true) {
  if (currentBranchId === null && withDefaultBranch === true) {
    return defaultBranchId
  }
  return currentBranchId
} // <-- infers to MaybeID return type

我希望总是得到ID返回类型。

这里是the playground link,我尝试了几次尝试-未成功。

感觉很简单,但是我希望它不能那样工作,因为它基于运行时值。

1 个答案:

答案 0 :(得分:1)

返回类型正确。返回类型有两种,一种是string,另一种是null,从MaybeID开始就适合类型type ID = string