gpt4 book ai didi

typescript - 如何让 TypeScript 自动推断 `yield` 调用结果的类型?

转载 作者:搜寻专家 更新时间:2023-10-30 20:41:13 24 4
gpt4 key购买 nike

在下面的代码示例中:

function* gen() {
let v = yield Promise.resolve(0);
return v;
}

v 的类型被推断为any。我想知道是否有办法让它根据上下文线索推断出不同的类型(例如,number)。

我知道在这个特定场景中我可以使用 async/await 代替,但我想知道一般情况(当不使用 promises 时)。

最佳答案

不幸的是,Typescript 现在不支持这个。除了简单地在每个 yield 语句上放置类型注释之外,似乎没有真正好的解决方法:

function* gen() {
let v: number = yield Promise.resolve(0);
return v;
}

这是一个棘手的问题,因为 yield 语句返回的值完全取决于消耗生成器的语义。我知道 yield Promise.resolve(0) 最终会返回一个数字,只是因为我知道 coroutine 的语义,但 v 确实可以任何东西。

但希望 Typescript 将添加对将这些关系声明为生成器本身类型的一部分的支持。这是一个 relevant github issue .

关于typescript - 如何让 TypeScript 自动推断 `yield` 调用结果的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38273994/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com