【发布时间】:2021-01-06 17:04:17
【问题描述】:
我想声明一个const 变量,在try 块内对其进行初始化,然后在该try 块之外使用它。例如:
const result;
try {
result = getResult();
} catch (error) {
report(error);
return;
}
use(result);
或异步:
const result;
try {
result = await fetchResult();
} catch (error) {
report(error);
return;
}
use(result);
我不想要的:
- 使用
let,因为这允许以后覆盖result。 - 将其移至单独的函数,因为我只希望在给定范围内可以访问此逻辑。
我在我的代码中经常看到这种模式,那么有没有办法使用模块化 TypeScript 解决方案来做到这一点?
以下问题类似,但不提供可重用的类型安全解决方案:
【问题讨论】:
-
如果抛出错误,
catch下面的代码永远不会被使用。为什么不直接将后续代码放在try中? -
@crashmstr 因为
catch下面的代码也可能抛出,这可能需要不同的错误处理。因此,将所有内容放在同一个try块中可能会导致意外行为。