typescript - X podría ser instanciado con un tipo arbitrario que podría no estar relacionado con Y
X podría ser instanciado con un tipo arbitrario que podría no estar relacionado con Y
Parece que TS no me permite hacer exactamente lo que quiero hacer. Básicamente, tengo un objeto/clase que tiene un método "call" que simplemente devuelve algún tipo de objeto de configuración para hacer llamadas a la API.
La propiedad "Request" es un método que devuelve la promesa en sí misma (una llamada a la API), mientras que "payloadHandler" debería recibir la respuesta de la solicitud y hacer lo que sea con ella. Eso significa que sí, el payload podría estar en cualquier forma o formato, lo cual a TypeScript no le gusta y no puedo encontrar una manera de inferir el tipo de respuesta a partir de la solicitud tipada.
Además, debería mencionar por si acaso: no puedo agregar parámetros de tipo a la interfaz Entity, es una clase externa que solo estoy ampliando en mi caso real.
type CallDescriptor<Response> = {
request: () => Promise<Response>
payloadHandler(payload: Response): void
};
interface Entity {
call: <Response>() => CallDescriptor<Response>
}
const entity: Entity = {
// 'Response' could be instantiated with an arbitrary type which could be unrelated to 'number'
call() {
return {
request: () => new Promise<number>((res, rej) => res(1)),
payloadHandler(payload) {
// payload has to infer type from request's promise's resolve type
console.log(payload)
}
}
}
}