Car*_*lin 6 yield type-inference generator typescript
在以下代码示例中:
function* gen() {
let v = yield Promise.resolve(0);
return v;
}
Run Code Online (Sandbox Code Playgroud)
v
推断的类型是any
.我想知道是否有办法让它number
根据情境线索推断出不同的类型(比方说).
我知道在这个特定场景中我可以使用async
/ await
而不是,但我想知道一般情况(当不使用promises时).
不幸的是,Typescript 目前不支持这一点。除了简单地在每个语句上添加类型注释之外,似乎没有什么好的解决方法yield
:
function* gen() {
let v: number = yield Promise.resolve(0);
return v;
}
Run Code Online (Sandbox Code Playgroud)
这是一个很难解决的问题,因为yield
语句返回的值完全取决于消耗生成器的任何内容的语义。我知道yield Promise.resolve(0)
最终会返回一个数字,只是因为我知道 的语义coroutine
,但v
实际上可以是任何东西。
但希望 Typescript 将添加对将这些关系声明为生成器本身类型的一部分的支持。这是一个相关的 github 问题。
归档时间: |
|
查看次数: |
451 次 |
最近记录: |