在Java中,我将这样声明一个函数:
public boolean Test(boolean test) throws Exception {
if (test == true)
return false;
throw new Exception();
}
Run Code Online (Sandbox Code Playgroud)
而且我可以使用此功能而无需处理异常。
如果可能,如何在Typescript中执行相同的操作?编译器会告诉我,如果没有try / catch,我将无法使用该函数。
Est*_*ask 17
TypeScript中没有此类功能。仅当函数返回错误而不抛出错误时才可以指定错误类型(这种情况很少发生,并且容易成为反模式)。
唯一相关的类型是never
。仅当函数肯定抛出错误时才适用,并且不能比此更具体。与其他类型一样,只要不引起类型问题,就不会引起类型错误:
function Test(): never => {
throw new Error();
}
Test(); // won't cause type error
let test: boolean = Test(); // will cause type error
Run Code Online (Sandbox Code Playgroud)
当函数有可能返回值时,never
将被返回类型吸收。
可以在函数签名中指定它,但仅供参考:
function Test(test: boolean): boolean | never {
if (test === true)
return false;
throw new Error();
}
Run Code Online (Sandbox Code Playgroud)
它可以向开发人员提示可能会发生未处理的错误(如果从函数体中看不到该错误),但这不会影响类型检查并且无法强制执行try..catch
;(test: boolean) => boolean
通过键入系统来考虑此函数的类型。
您@throws
至少可以使用jsdoc标记该函数。即使它不提供打字稿编译器的静态分析错误,一些不错的IDE或棉短绒可能仍然报告警告,如果你尝试忽略抛出的功能...
/**
* @throws {Error}
*/
function someFunc() {
if (Math.random() < 0.5) throw Error();
}
someFunc();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7444 次 |
最近记录: |