如何在TypeScript的以下代码段中创建接口IFoo来键入调用controller
的结果?
我将函数定义如下:
export const controller = ({ loggedUser }: IConArgs) => ({
async getAll() {
...
},
async getById(id: IUserId) {
...
},
...
});
我通过以下方式分配它:
controllers: {
users: controller({ loggedUser: user })
}
然后我称其为:
controllers.users.getAll();
我要执行以下操作:
IControllers: {
controllers: {
users: IFoo
}
}
和
导出const控制器:IFoo =(...)
答案 0 :(得分:0)
users
和controller
的正确类型不相同,因为users
是调用controller
的结果。您可以将IFoo
设为users
的接口:
interface IFoo {
// TODO: Change `any` to correct return type
getAll(): Promise<any>;
getById(id: IUserId): Promise<any>;
}
如果要注释controller
的类型,可以执行以下操作:
export const controller: (args: IConArgs) => IFoo =
({ loggedUser }: IConArgs) => ({ ... });
更好地,注释箭头函数的返回类型,以避免重复参数类型:
export const controller = ({ loggedUser }: IConArgs): IFoo => ({ ... });
如果这不是您要的,请说明问题。