为何TypeScript不对未返回Promise的async函数报错?相关疑问
问题解答
1. 当前返回方式是否正确?
完全正确。async 函数的核心特性之一就是自动将返回值包装为 resolved 状态的 Promise——不管你 return 的是普通值还是 Promise 对象,它都会统一处理成 Promise 返回。所以调用者通过 await myFunc(...) 可以直接拿到你返回的 {message: 'Success', result} 对象,完全符合预期。
2. TypeScript 为何不报错?存在隐式转换吗?
这是 TypeScript 对 async 函数的内置类型规则,属于隐式的类型包装。
当你给 async 函数标注返回类型为 Promise<MyResponseType> 时,TS 知道 async 函数会自动把你实际返回的 MyResponseType 类型值,包装成 Promise<MyResponseType>。所以你直接返回 MyResponseType 类型的对象,和函数签名的返回类型是完全匹配的,不会触发类型错误。简单说,TS 已经帮你处理了这个类型转换的逻辑,不需要你手动写 Promise.resolve(...) 来包装返回值。
内容的提问来源于stack exchange,提问作者Bersan
相关产品推荐
相关产品推荐

