Сделайте factory
для функции generi c, и мы можем передать «T» из factory
в Config
, что также является универсальным c объектом.
Начать с Config
интерфейс, сделайте его общим c интерфейсом.
interface Config<T> { // Generically for whole interface
selector?: (httpResponse: HttpResponse<T>) => unknown;
}
Следующая, factory
функция:
export function factory<T>(options: Config<T>): something { // return type is "T" or something ?
// use options to return something
}
Мы передаем тип «T» от factory
до Config
.
Наконец, пример:
b.ts
export type ApiResponse = {
data: {
username: string;
}
}
Использование фабрики
factory<ApiResponse>({
selector: res => res.data.data.username, // typehint for the `res`, I try with HttpResponse is AxiosResponse
});