【发布时间】:2021-07-11 20:13:15
【问题描述】:
定义以下递归异步函数生成器的正确类型是什么?
async function* recursive_f(n: number): AsyncGenerator<number, ?, ?> {
n++
if(n>0) {
yield n
return await recursive_f(n)
}
return Promise.resolve()
}
以下代码未按预期工作。它应该递归地减少 n 并产生一次负数,而不是通过 if 条件并结束。
async function* recursive_f(n: number): AsyncGenerator<number> {
if (n < 0) {
yield n
}
return await recursive_f(n--) // 'await' has no effect on the type of this expression.
}
async function main_function() {
console.log(`main_function`)
let num = 10
for await (const n of recursive_f(num)) {
console.log(n)
}
}
main_function().then(console.log, console.error)
【问题讨论】:
-
恐怕我不明白你想要达到什么目的;您希望
recursive_f(10)准确生成一组数字吗?只是-1吗?或者是从10到1的所有数字,比如this?你为什么要递归调用函数而不是迭代?只是玩递归还是有一些实际用例?我现在比第一次问这个问题时更困惑??? -
我需要
recursive_f来产生-1但递归地减少n,我只是在这里玩,但我无法创建一个链来做到这一点
标签: typescript recursion types generator