【发布时间】:2020-05-04 20:39:15
【问题描述】:
我正在使用类型为
的库中的函数type QueryFetcher = (query: string, variables?: Record<string, any>) => Promise<QueryResponse> | QueryResponse;
我想在不编辑源文件中的类型声明的情况下为该类型添加一个附加参数。
我想我可以做类似的事情
type WithHeader = (header: string) => Promise<QueryResponse> | QueryResponse
type QueryFetcherWithHeader = QueryFetcher & WithHeader
这会产生
(query: string, variables?: Record<string, any>, header: string) => Promise<QueryResponse> | QueryResponse;
但是没有
很明显,这里有些东西我不明白,但我找不到东西
【问题讨论】:
-
QueryFetcher & WithHeader必须是一个既可用作QueryFetcher又可用作WithHeader的函数。这意味着您可以将其称为f("query", {variable: ""}),也可以将其称为f("header")。这些都不是你想要的签名。以编程方式附加到参数列表实际上是不可能的(尤其是使用可选参数),至少不会比仅手动编写预期的QueryFetcherWithHeader签名差很多。有了用例的更多细节,我可能会提出更好的建议,但现在我不知道还有什么建议。 -
&是一个交集运算符,但它不能像您想象的那样使用函数。为什么不import QueryResponse手动声明函数签名。
标签: typescript function type-alias