【发布时间】:2021-09-29 12:13:35
【问题描述】:
概述和目的:
我正在尝试编写一个函数,它是作为参数传入的函数的包装器;其中所讨论的函数假定键入作为参数传入的函数。
这似乎是打字稿中的一个常见用例,但是在搜索后似乎没有一个已发布的解决方案涵盖我的用例。
这是一个例子:
export interface LockParams {
id: string;
}
export interface LockRecord {
id: string;
createdOn: string;
}
export async function acquireLock(params: LockParams): Promise<LockRecord> {
// talk to database and return a value of LockRecord
}
export async function deleteLock(params: LockParams): Promise<void> {
// talk to database and delete a lock record.
}
export interface DoWorkParams {
id: string;
customerName: string;
}
export interface DoWorkResponse {
id: string;
customerName: string;
createdOn: string;
}
export async function doWork(params: DoWorkParams): Promise<DoWorkResponse> {
// do work implementation
}
我的问题:
如何定义一个允许将带有参数的doWork 发送给它的函数?在这种情况下,我希望函数获取锁,执行doWork 函数,然后在完成时删除锁,然后返回来自doWork 的响应;同时让包装函数假定来自doWork 函数的输入和响应类型。
【问题讨论】:
-
您想将带有参数的
doWork发送到acquireLock吗? -
您能否添加一个示例,说明您希望如何调用这个新函数,也许是
let response: DoWorkResponse = await wrapper(doWork, doWorkParams)? -
您的意思是您对
doWork有多个不同的功能,并且您想将所有这些功能与“包装器”一起使用?LockParams从哪里获取锁?是否所有DoWorkParams都有一个id字段? -
是否要求该包装器只接受
doWork或任何函数? -
@Yoshi 正在寻找任何功能
标签: typescript typescript-typings