【发布时间】:2020-08-03 14:46:20
【问题描述】:
请帮助我了解 TS 如何缩小类型。我have 一个简单的foo 函数,它在任意数组上具有forEach 迭代器。很明显console.log在执行这段代码后会记录false,但是TS坚持是true,这是错误的。
我的期望是如果TS因为可能的异步而无法处理forEach或类似的功能,那么它应该建议boolean。这种情况真的让我很沮丧,也降低了我的工作效率,因为我需要重新检查所有内容 10 次,以证明 TS 错误并且我的代码是正确的。
function foo() {
let canActivate = true;
['foo'].forEach(() => {
canActivate = false;
})
console.log(canActivate);
}
foo();
【问题讨论】:
-
canActivate在forEach回调中的类型是什么? -
另外,您使用的是什么版本的 TypeScript?您是否在他们的 GitHub 存储库中将此作为问题提交?
-
尝试使用
var而不是let -
@Dai
canActivatetype inforEach和外面一样,因为是同一个变量。 TS 版本是 3.9.2。不,我没有填写问题,因为我认为这不是错误并且可以以某种方式解释。 -
@AlvinStefanus 我认为我们不应该在现代代码中使用
var。无论如何,var的建议是一样的:(local var) canActivate: true
标签: typescript