You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TypeScript中BasicAsyncFunc泛型与memoized_async类型推断解析

TypeScript类型问题解答

1. 类型<U extends SimpleArgs, R> extends BasicAsyncFunc<U, R>的含义

这段是Memoized接口的定义逻辑,拆解来看:

  • <U extends SimpleArgs, R>:声明两个泛型参数,U被约束为必须是SimpleArgs类型(也就是由string/number/boolean/undefined组成的数组),R是异步函数返回值的原始类型。
  • extends BasicAsyncFunc<U, R>:表示Memoized接口继承了BasicAsyncFunc<U, R>这个函数类型。意思是任何实现Memoized的对象,首先得是一个符合BasicAsyncFunc签名的异步函数——能接收U类型的参数,返回包含R类型深只读对象的Promise;同时还得额外拥有cache_size(获取缓存大小)和clear_cache(清空缓存)这两个方法。

简单说,Memoized就是“带缓存操作方法的特定异步函数”类型。

2. memoized_async会被推断为什么类型

memoize_async会被推断为一个泛型函数,具体类型如下:

const memoize_async: <R, U extends SimpleArgs>(
  options: { ttl: number; size: number },
  f: BasicAsyncFunc<U, R>
) => Memoized<U, R>

它的作用是:接收一个含缓存过期时间ttl、缓存最大容量size的配置对象,以及一个符合BasicAsyncFunc签名的异步函数,返回一个Memoized类型对象——这个返回对象既可以像原函数一样调用,也能通过cache_size和clear_cache方法操作缓存。


内容的提问来源于stack exchange,提问作者confusedWarrior

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 02:09:13