为什么这个表达
_.chain(this.entityTypeConnections)
.filter(function (con:app.domain.EntityTypeConnection) { return con.typeId == typeId; })
.size()
.value()
类型为EntityTypeConnection[]
,但不是数字?
我需要将此表达式与零(> 0)进行比较并得到错误:
错误TS2365:运营商'>'不能应用于类型' EntityTypeConnection []'和'号码'
我正在尝试检查集合中是否有某个元素typeId
。
答案 0 :(得分:1)
所以基本上我假设您不能在类型化的上下文中使用size()
。检查下划线的.d.ts文件显示其返回类型为_Chain<T>
,在您的情况下为_Chain<EntityTypeConnection[]
- 显然这是错误的(在普通的javascript中运行它,你会得到你的号码)
获取值(“unchain”)并在数组上调用.length
:
let size = _.chain(this.entityTypeConnections)
.filter(function (con:app.domain.EntityTypeConnection) { return con.typeId == typeId; })
.value()
.length;
如果您想检查具有给定typeId
的项目是否存在,您也可以使用:
let hasItem = !!_.findWhere(this.entityTypeConnections, {
typeId: typeId
});