TypeScript泛型Promise:Context API默认值的正确签名求解
正确的DEFAULT_VALUE签名写法
假设你的Context接口定义包含一个带泛型、返回Promise<void>的方法,类似:
interface AppContext { submit: <T>(payload: T) => Promise<void>; }
你需要让DEFAULT_VALUE的方法签名完全匹配接口的泛型定义,以下两种写法都可以解决报错:
写法1:使用async函数
async函数天然返回Promise,空函数体的async函数会隐式返回Promise<void>,加上泛型<T>即可对齐接口:
const DEFAULT_VALUE: AppContext = { submit: async <T>(payload: T) => {} };
写法2:返回已resolve的Promise
如果不需要异步逻辑,直接返回Promise.resolve(),同时保留泛型声明:
const DEFAULT_VALUE: AppContext = { submit: <T>(payload: T) => Promise.resolve() };
核心要点
- 必须保留泛型
<T>,否则TypeScript会因为方法签名不匹配(缺少泛型)抛出错误。 Promise<void>不需要额外指定泛型参数,只要Promise没有resolve具体值,就符合该类型要求。
内容的提问来源于stack exchange,提问作者Marcos Favarão
相关产品推荐
相关产品推荐

