【发布时间】:2022-11-22 18:32:20
【问题描述】:
有谁知道我如何在由两种不同类型组成的数组中过滤并获取大于 250 的数字,即
interface Foo {
myNumber: number
}
interface Bar {
present: boolean
}
const myArray : (Foo | Bar)[] = [{myNumber: 200}, {myNumber:600}, {myNumber:450}, {present: true}]
myArray.filter((it: Foo|Bar) => it?.myNumber >= 250)
我得到的错误是“属性‘myNumber’在‘Foo | Bar’类型上不存在。”
我知道错误消息背后的原因,但是想不出一个直接的解决方案 atm。
【问题讨论】:
-
这回答了你的问题了吗? Typescript property does not exist on union type
-
你为什么使用
Foo&Bar?您可以在一个界面中同时使用两者吗? -
@托比亚斯。是的,试过 myArray.filter((it: Foo|Bar) => "myNumber" in it? it.myNumber >= 250 : false),它确实解决了问题。如果有任何使用过滤器,我正在寻找更优雅的解决方案。
-
@Mbistami 是的,我们可以。但是,我不会 -> 遗留代码
-
@AluanHaddad 或我可以删除所有类型,使用未知或任何类型。或者更好的办法是摆脱整个打字稿并使用 javascript :D
标签: javascript typescript