我对typescript还不太熟悉,我可以打90%的代码基。但是,当涉及休息/传播运营商时,我完全不知所措。我今天在我们的代码中遇到了这个问题(我没有写这个),但是我发现它不起作用:
interface searchClient {
searchForValues({
name,
query,
...qp,
}: {
name: string;
query: string;
qp: QpInterface; //???this part doesn't work
}): Promise<any>;
}
interface QpInterface {
page?: number;
hits?: number;
attributes?: string;
}
它不起作用,因为
qp
在键入时指定了键的名称,而我想键入的是...qp
部分。...qp
中的每个键/值对都由qpinterface键入。下面是一个示例函数调用:
this.searchClient.searchForValues({
name: 'title',
query: 'little sheep',
page: 5,
hits: 2
});
我在文件上找不到很多东西。我试过把
...qp: QpInterface;
和...QpInterface;
放进去,但都没用。在参数中键入...qp
的最佳方法是什么? 最佳答案
Until spread types are implemented in TypeScript,您可以使用intersection type来执行以下操作:
interface searchClient {
searchForValues({
name,
query,
...qp,
}: {
name: string;
query: string;
}
& QpInterface): Promise<any>;
}