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.
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.
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)