我会尽力描述我们的案例,因为我不知道如何命名这个案例。
我们有一个包,它处理请求我们的服务/云功能(例如,如果服务 A 需要服务 B 完成某些操作,它就会使用这个包)。该包公开了一个函数来调用每个服务(例如auth,对于 service ,将auth公开一个函数。我们为每个服务定义了可用端点,随着数量的增长,维护变得更加困难,因为我们无法找到一种方法输入请求的参数。
我想做的只是拥有另一种类型,其中包含每个服务的每个端点的参数类型。例如,我们有一个名为 的端点getEmail,它将返回用户的电子邮件并需要一个id参数。类型参数类型看起来像这样:
type Params = {
getEmail: {
id: number;
}
}
Run Code Online (Sandbox Code Playgroud)
代码的非常简化版本:
type FunctionName = 'foo' | 'bar' | 'baz';
type FunctionParams = {
foo: {
myVar: number;
};
bar: {
myVar: string;
};
baz: Record<string, number>;
};
declare const sendRequest: (...args: any[]) => any;
const callFunction = (
fn: FunctionName,
params: FunctionParams[typeof fn],
// ^^^^^^^^^ What should I put here?
) => …Run Code Online (Sandbox Code Playgroud) typescript ×1