如何在Typescript中引发类型错误

时间:2020-04-29 16:25:21

标签: typescript typeerror

我遇到以下打字稿问题:

编写一个确定用户是否已登录的函数。有时,它会以用户登录的次数被调用。有时,它会以true调用。从来没有用false

来调用

到目前为止,我的代码:

function isLoggedIn(param: number | boolean ) {
  if (param === 0) {
    return false
  } else if (param === false) {   
    return false
  } else {
    return true
  }
}

当用false调用函数时,我不知道如何处理这种情况,因此可能会返回类型错误。如果我做: if (param === false) {return false},我得到一个错误

预期:类型错误,但得到:false

如果我自己抛出TypeError,即if (arg === false) throw new TypeError('type error') 我返回错误“ 预期:类型错误,但得到:TypeError:'类型错误'

有人知道如何使该功能正常工作吗?

1 个答案:

答案 0 :(得分:1)

我想问题中提到的Type error不是JS TypeError,而是编译时的TypeScript类型错误,所以类似:

'false'类型的参数不能分配给'number |类型的参数。真的”。(2345)

您可以将声明更改为:

function isLoggedIn(param: number | true) {
  if (param === 0) {
    return false
  } else {
    return true
  }
}

请参见number | true。这里的true代表 literal “ true”值,而不仅仅是布尔值,因此您可以传递“ true”,但不能传递“ false”。

您也应该在内部修改if条件,因为如示例中所述,param永远不会是false。所以您可以像这样使用它:

isLoggedIn(10); // ok
isLoggedIn(true); // ok
isLoggedIn(false); // TS Error

您可以在此处进行检查:Playground Link