【发布时间】:2019-07-17 23:04:41
【问题描述】:
我想将我的服务方法包装在一个cachify 方法中,该方法在查询数据库之前检查缓存。但是,我无法保留包装函数的类型声明。
包装cachify 函数如下所示:
// cache.ts
const cachify = async <T>(fn, args): Promise<T> => {
const key = constructHashKey(args)
const cachedEntry = get(key)
if (cachedEntry) {
return cachedEntry
} else {
const entry = await fn(...args)
put(key, entry)
return entry
}
}
以下是包装函数的使用示例:
// userService.ts
const getUserProfilePhotoUrl = async (id: string, size: string): Promise<string> => {
return cachify<string>(fetchPhotoUrl, [
id,
size
])
}
fetchPhotoUrl 函数具有签名(id: string, size: string): Promise<string>。
但是,如果我向数组 [id, size] 添加一些任意参数,我不会收到任何类型错误。如何让 Typescript 意识到这一点?
【问题讨论】:
标签: typescript types