El primer fragmento es el código con el que estoy trabajando y debajo está el error que arroja y sucede en cada parte de "selección de rendimiento" que está en el código y no estoy seguro de cuál es mi próximo paso.
function* onLoadingDomainsresult() { const pathname = yield select(getPathname); interface Params { hastag: string; } 'yield' expression implicitly results in an 'any' type because its containing generator lacks a return-type annotation. TS7057 113 | 114 | function* onLoadingDomainsresult() { > 115 | const pathname = yield select(getPathname); | ^ 116 | 117 | interface Params { 118 | hastag: string;El tipo literal de select(getPathname) no se relaciona con el valor que obtiene del yield . select(getPathname) es el valor producido por su co-rutina a su contexto de iteración.
El valor inyectado en su generador por su contexto de ejecución (a través de la llamada next() ) SÍ importa para el tipo que obtiene de la expresión de yield .
De cualquier manera, actualmente Typescript no tiene metadatos sobre lo que obtendrá, ya que su función generadora no tiene anotación de tipo.
Supongo que esto es redux-saga.
Una anotación típica del tipo de función del Generador es algo así como...
type WhatYouYield="foo" type WhatYouReturn="bar" type WhatYouAccept="baz" function* myfun(): Generator< WhatYouYield, WhatYouReturn, WhatYouAccept > { const myYield = "foo" //type of myYield is WhatYouYield const myAccepted = yield myYield; //type of myAccepted is WhatYouAccept return "baz" //type of this value is WhatYouReturn } ... y el error que obtiene es que Typescript tiene que adivinar el tipo WhatYouAccept sin la anotación de tipo Generador en su función.
Recibí el mismo error y lo resolví.
export interface ResponseGenerator{ config?:any, data?:any, headers?:any, request?:any, status?:number, statusText?:string } const response:ResponseGenerator = yield YOUR_YIELD_FUNCTION console.log(response.data)En las actualizaciones recientes de TypeScript, hay más restricciones de tipos en las funciones del generador.
Tipo 1: ceder con call
function* initDashboard(): any { let response = yield call(getDashboardData); console.log(response); }Tipo 2: cede sin call
function* initDashboard() { let response: any = yield getDashboardData; console.log(response); } Nota: Usar any es la solución más rápida, pero la solución adecuada sería crear un tipo/interfaz para la respuesta y usarla como tipo.