javascript - 'yield' 表达式隐式生成 'any' 类型,因为其包含的生成器缺少返回类型注释

标签 javascript reactjs typescript

第一个片段是我正在使用的代码,下面是它抛出的错误,它发生在代码中的每个“yield select”部分,我不确定我的下一步是什么。

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;

最佳答案

select(getPathname) 的字面量类型与您从 yield 返回的值无关. select(getPathname)是您的协程对其迭代上下文产生的值。
通过运行上下文(通过 next() 调用)注入(inject)到生成器中的值与从 yield 返回的类型有关。表达。
无论哪种方式,当前 Typescript 都没有关于它将获得什么的元数据,因为您的生成器函数没有类型注释。
我猜这是redux-saga。
典型的生成器函数类型注释类似于...

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 
}
...而您得到的错误来自 Typescript 必须猜测 WhatYouAccept在您的函数上输入没有生成器类型注释的类型。

关于javascript - 'yield' 表达式隐式生成 'any' 类型,因为其包含的生成器缺少返回类型注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66922379/

相关文章:

javascript - gulp-nodemon 监视 typescript 文件

typescript - 合并 TypeScript 中对象元组的值类型

javascript - 如何自动加载 Node 项目中包含特定装饰器的文件

c# - 没有 Response.End() 代码无法正常工作

javascript - 如何使用 JS fetch 正确处理 400(或任何不成功的状态代码)

reactjs - ReduxReducer 只返回操作的值而不是状态?

javascript - 处理 Redux 状态的函数的名称(例如 reducer 和选择器)

函数外的javascript变量(使用异步/等待)?

javascript - 为什么我的 Canvas 动画弧在中点出现故障?

javascript - 什么是平均文件:workspaces in package dependencies?