假设我有一个函数,它有三个参数。第一个参数是由我定义的枚举类型,第二个参数是一个对象,其形状基于传递给枚举值。第三个参数只是一个字符串。
看一下这个函数:
您可以看到,我将此函数声明为通用函数,并接收两种类型并将默认值设置为任意类型,这很有效。但是,在这种情况下,每当我想调用此函数时,都必须手动指定输入和响应类型。问题是,我知道对于我的
因此,我的问题是,typescript是否有办法根据枚举值推断出类型?
调用此函数的示例:
这个方法很好,但我想做的方式是:
看一下这个函数:
async callApi<Response = any, Input = any>(
op: ApiOperations,
input: Input,
functionName: string
): Promise<Response> {
return this.lambda.invoke<Response>(functionName, {
op,
input
});
}
您可以看到,我将此函数声明为通用函数,并接收两种类型并将默认值设置为任意类型,这很有效。但是,在这种情况下,每当我想调用此函数时,都必须手动指定输入和响应类型。问题是,我知道对于我的
ApiOperations
枚举中的每个值,我只有一个输入类型和一个响应类型。因此,我的问题是,typescript是否有办法根据枚举值推断出类型?
调用此函数的示例:
async getChatRooms({ numberResults, siteId, startIndex }: GetChatRoomsInput): Promise<ChatRoom[]> {
return this.api.callApi<ChatRoom[], GetChatRoomsInput>(ApiOperations.GetChatRooms, {
siteId,
numberResults,
startIndex
}, 'getChatRooms');
}
这个方法很好,但我想做的方式是:
async getChatRooms({ numberResults, siteId, startIndex }: GetChatRoomsInput): Promise<ChatRoom[]> {
return this.api.callApi(ApiOperations.GetChatRooms, {
siteId,
numberResults,
startIndex
}, 'getChatRooms');
}
对于这种情况,typescript将能够告诉我输入的类型是GetChatRoomsInput
,响应类型是ChatRoom[]
。