如何动态扩展基本接口?
How do I extend a base interface dynamically?
我正在使用 react-query 并且有很多 useQuery
接受这些参数的挂钩:
export interface UseQueryHookProps<K> {
client: K;
isEnabled?: boolean;
}
我将如何编写更通用的接口以接受任何或更确切地说未知的附加 interface/s?
所以像这样:
export interface UseQueryHookProps<K, T> extends T {
client: K;
isEnabled?: boolean;
}
UseQueryHookProps
的调用位置:
export const useGetJob = ({
client: monitoringService,
isEnabled = true,
jobId,
}: UseQueryHookProps<MonitoringServiceClient, {jobId: string}>)
我不知道怎么写?
您不能使用 T
扩展接口。为了做到这一点 - T
应该是静态已知的。
如果你想用 T
扩展 UseQueryHookProps
你应该使用 type
语法而不是 interface
.
export interface UseQueryHookProps<K> {
client: K;
isEnabled?: boolean;
}
type ExtendHookProps<K, T> = UseQueryHookProps<K> & T
interface MonitoringServiceClient {
tag: 'MonitoringServiceClient'
}
export const useGetJob = ({
client: monitoringService,
isEnabled = true,
jobId,
}: ExtendHookProps<MonitoringServiceClient, { jobId: string }>) => {
}
我正在使用 react-query 并且有很多 useQuery
接受这些参数的挂钩:
export interface UseQueryHookProps<K> {
client: K;
isEnabled?: boolean;
}
我将如何编写更通用的接口以接受任何或更确切地说未知的附加 interface/s?
所以像这样:
export interface UseQueryHookProps<K, T> extends T {
client: K;
isEnabled?: boolean;
}
UseQueryHookProps
的调用位置:
export const useGetJob = ({
client: monitoringService,
isEnabled = true,
jobId,
}: UseQueryHookProps<MonitoringServiceClient, {jobId: string}>)
我不知道怎么写?
您不能使用 T
扩展接口。为了做到这一点 - T
应该是静态已知的。
如果你想用 T
扩展 UseQueryHookProps
你应该使用 type
语法而不是 interface
.
export interface UseQueryHookProps<K> {
client: K;
isEnabled?: boolean;
}
type ExtendHookProps<K, T> = UseQueryHookProps<K> & T
interface MonitoringServiceClient {
tag: 'MonitoringServiceClient'
}
export const useGetJob = ({
client: monitoringService,
isEnabled = true,
jobId,
}: ExtendHookProps<MonitoringServiceClient, { jobId: string }>) => {
}