如何在 Typescript 中声明抛出错误的函数

2024-01-05

在 Java 中我会声明一个这样的函数:

public boolean Test(boolean test) throws Exception {
  if (test == true)
    return false;
  throw new Exception();
}

我可以使用这个函数而不处理异常。

如果可以的话,如何在 Typescript 中做同样的事情?编译器会告诉我如果没有 try/catch 就无法使用该函数。


TypeScript 中没有这样的功能。仅当函数返回错误而不是抛出错误时,才可以指定错误类型(这种情况很少发生,并且很容易出现反模式)。

唯一相关的类型是never https://www.typescriptlang.org/docs/handbook/basic-types.html#never。仅当函数明确抛出错误时才适用,它不能比这更具体。它和其他类型一样,只要不导致类型问题,就不会导致类型错误:

function Test(): never => {
  throw new Error();
}

Test(); // won't cause type error
let test: boolean = Test(); // will cause type error

当函数有可能返回值时,never被返回类型吸收。

可以在函数签名中指定它,但仅供参考:

function Test(test: boolean): boolean | never {
  if (test === true)
    return false;

  throw new Error();
}

它可以向开发人员提示可能存在未处理的错误(如果从函数体中不清楚),但这不会影响类型检查,也不能强制try..catch;考虑该函数的类型(test: boolean) => boolean通过打字系统。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Typescript 中声明抛出错误的函数 的相关文章

随机推荐