打字稿:键入“受众”是不能分配给键入“布尔”

打字稿:键入“受众”是不能分配给键入“布尔”

问题描述:

问题:打字稿:键入“受众”是不能分配给键入“布尔”

.filter(audience => audience) 

我使用VSCode,我知道为什么,因为它是期待一个布尔值的投掷这个错误,我要回一个对象,但这是有效的Javascript,因为我正在返回一个真值,所以引用将被强制为真。我可以在配置中更改某些内容以使其正常工作吗?我已经使它的工作:

.filter(audience => Boolean(audience)) 

但我宁愿避免这种情况。

+0

您正在使用什么版本的打字稿的?用我自己的测试,我没有错误 –

+0

2.4.2。它实际上不在数组的过滤方法中。这来自rxjs中Observables的过滤方法。 – Christian

我很惊讶你看到这个错误。但是如果你需要一个布尔值,truthy/falsy价值经常被转换为布尔这样的:

.filter(audience => !!audience) 

有几种不同的方式,你可以做一个测试。由于TypeScript可以帮助您编写更好的代码,它对接受的内容很挑剔(这是一件好事)。这里有几种不同的方式来告诉某个对象是一个布尔值。

我们可以将它转换为anyboolean可能工作太)

.filter(audience => <any>audience) 

正如弗兰克提到我们可以使用双!

.filter(audience => !!audience) 
+0

你说得对,我没有考虑'null' –