我有以下代码:
let statistics = this.video.getStatistics();
let currentLikeCount : number = statistics!.getLikeCount() ? statistics.getLikeCount() : 1;
但是,在使用Typescript
进行编译时出现以下错误error TS2322: Type 'number | null' is not assignable to type 'number'.
我的条件检查以查看like count是否为null,如果是,则将其分配给一个数字,但typescript仍会抱怨它可能为null。
如何正确地为数字分配相同的数量?
答案 0 :(得分:8)
TypeScript无法知道getLikeCount()
每次调用时都会返回相同的值。还有很多其他方法可以用不会两次调用函数的方式编写这段代码,例如:
statistics.getLikeCount() || 1
或者
const c = statistics.getLikeCount();
let c2 = c == null ? c : 1;
答案 1 :(得分:1)
只是为了澄清为什么编译器仍然抱怨:
如果您将三元语句写为/ else,则得到
if (statistics!.getLikeCount()) {
currentLikeCount = statistics.getLikeCount();
} else {
currentLikeCount = 1;
}
TS编译器独立评估对getLikeCount()
的两次调用,从而抱怨可能的空值。
Ryan的回答提供了解决这个问题的可能方法。