#### 遇到一个 `TypeScript` 中有关 `Promise` 的类型推导问题: 以下代码中,`resolve` 会有明确的类型限制,但 `reject` 却没有,想知道如何才能做到? type P1 = Promise; const p1: P1 = new Promise((resolve, reject) => { // Expected 1 arguments, but got 0. Did you forget to include 'void' in your type argument to 'Promise'?ts(2794) resolve(); resolve(1); // Argument of type 'string' is not assignable to parameter of type 'number | PromiseLike'.ts(2345) resolve("str"); reject(); reject(123); reject("str"); });  #### 查看 `Promise` 的类型声明  只有一个泛型参数,貌似不支持。 找到了这篇文章,文章的结论是:**无法定义,也无需定义。** [Typescript 中 Promise reject 的类型该如何定义?](https://link.segmentfault.com/?enc=AJ9XaoGxvrAtYShtThPgpw%3D%3D.ZB4Tu8VkSGlSGuVbLpAVCVLQ2CSKk1st19kHbaMpYSgAK9tNH9hHXniteQW2G4HgnwCd3MChcgUbCxhzA%2FifyE99cIhvkhRqGD10ayFTh0XkTeGK%2BZYLE8mJ6Bn3y0P4) 希望 `reject` 也能有明确的类型推导,但貌似原理上不可行。 那么,在处理 `catch` 的时候,编辑器报出来的 `any`,应该怎么处理比较优雅呢? p1.catch((err: any) => {}) 除了在这里直接声明,还有什么最佳实践吗?