如何创建泛型函数类型,并将其参数作为返回类型的一部分进行转换。这样的事情:
interface Actions {
[fn: string]: <T>(...args: T[]){
type: string;
payload: {...T}
}
}
我的意思是有效负载应该是一个对象,它包含与函数参数及其类型相关的属性。
这是一个如何运作的例子:
const someActions: Actions {
// valid type method (has the same payload structure as arguments)
addItem: (item: SomeItemType){
type: "ADD_NEW_ITEM",
payload: { item }
},
// invalid type method (has different payload and arguments structure)
removeItem: (itemId: number, mode: SomeModeType){
type: "REMOVE_ITEM",
payload: {id : 0}
}
}