Javascript 避免在TypeScript中使用浮动承诺。无效vs.捕获何时?为什么?

Javascript 避免在TypeScript中使用浮动承诺。无效vs.捕获何时?为什么?,javascript,typescript,types,promise,Javascript,Typescript,Types,Promise,我很习惯看到在TypeScript的然后/捕获样式中处理承诺,例如: .findById(id) .then((result: something | undefined) => result ?? dosomething(result)) .catch((error: any) => console.log(error)) 然而,我也看到了void被用来阻止浮动承诺的模式,事实上,我的语言服务器有时会推荐它作为修复 void somePromise().dosomething()

我很习惯看到在TypeScript的
然后
/
捕获
样式中处理承诺,例如:

.findById(id)
.then((result: something | undefined) => result ?? dosomething(result))
.catch((error: any) => console.log(error))
然而,我也看到了void被用来阻止浮动承诺的模式,事实上,我的语言服务器有时会推荐它作为修复

void somePromise().dosomething();
现在,我对打字稿或承诺一点也不精通,但我很难看出,跳过catch而简单地使用void是多么的可取。简单的谷歌搜索并没有给我什么时候做什么的明确区分


还有其他答案解释了void的作用,但不是我为什么要使用它。关于解决浮动承诺有各种各样的问题,但我找不到详细的问题来解释为什么我会采取无效方法来战胜捕获。

在这里添加
void
并不会真正改变程序的行为,所以唯一可以提到这一点的原因是作为一种“闭嘴”操作符,例如:一种让你的皮棉安静下来的方法。

所以没有机会进行
async/await
?(如果你不能100%确定承诺永远不会拒绝)。使用
void
仅仅是为了满足客户的要求。如果您对异步操作的结果真的不感兴趣,那么可以使用
void
。所以,在某种意义上,它是有效的。然而,不想知道某件事是成功还是失败是相当罕见的。我现在想不出任何例子。因此本质上与添加ts ignore注释相同?@axwr,更像eslint disable,因为此错误可能来自您的linter,而不是typescript。