【发布时间】:2016-07-08 19:22:33
【问题描述】:
在以下代码示例中:
function* gen() {
let v = yield Promise.resolve(0);
return v;
}
v 的类型被推断为any。我想知道是否有办法让它根据上下文线索推断出不同的类型(比如number)。
我知道在这种特定情况下我可以改用async/await,但我想知道一般情况(不使用承诺时)。
【问题讨论】:
-
虽然函数内
v的类型是any,但如果我检查返回值的值:let a = gen()我得到IterableIterator<Promise<number>>,这似乎是正确的。 -
v的值由调用您的例程的客户端提供(在.next()调用中);许多客户端理论上可以用许多不同的类型调用它,因此根据定义,TypeScript 无法推断类型,即使假设它能够对调用生成器的所有位置进行完整的静态分析。
标签: typescript generator type-inference yield