打字稿:键入“受众”是不能分配给键入“布尔”
问题描述:
.filter(audience => audience)
我使用VSCode,我知道为什么,因为它是期待一个布尔值的投掷这个错误,我要回一个对象,但这是有效的Javascript,因为我正在返回一个真值,所以引用将被强制为真。我可以在配置中更改某些内容以使其正常工作吗?我已经使它的工作:
.filter(audience => Boolean(audience))
但我宁愿避免这种情况。
答
我很惊讶你看到这个错误。但是如果你需要一个布尔值,truthy/falsy价值经常被转换为布尔这样的:
.filter(audience => !!audience)
答
有几种不同的方式,你可以做一个测试。由于TypeScript可以帮助您编写更好的代码,它对接受的内容很挑剔(这是一件好事)。这里有几种不同的方式来告诉某个对象是一个布尔值。
我们可以将它转换为any
(boolean
可能工作太)
.filter(audience => <any>audience)
正如弗兰克提到我们可以使用双!
.filter(audience => !!audience)
+0
你说得对,我没有考虑'null' –
您正在使用什么版本的打字稿的?用我自己的测试,我没有错误 –
2.4.2。它实际上不在数组的过滤方法中。这来自rxjs中Observables的过滤方法。 – Christian