2个布尔的打字稿元组被推断为类型的数组布尔

2个布尔的打字稿元组被推断为类型的数组布尔

问题描述:

我试图做两个布尔值的元组在我BehaviorSubject2个布尔的打字稿元组被推断为类型的数组布尔

private someBehaviorSubject: BehaviorSubject<[boolean, boolean]> = new BehaviorSubject([false, false]); 

的地方,但我得到一个编译错误说:

Type 'BehaviorSubject<boolean[]>' is not assignable to type 'BehaviorSubject<[boolean, boolean]>' 

如何创建两个布尔值的元组,并正确初始化BehaviorSubject?它似乎认为[false, false]boolean[]类型,而不是索引0和索引1需要为布尔值的元组。

打字稿版本:从rxjs 2.3.3

BehaviorSubject v 5.0.1

+0

您可以包括'BehaviorSubject'的完整定义?另外,请包含您的TypeScript版本。 –

+0

*作为一个品味问题 - 在你给出的例子中,'boolean []'是一个合理的推断类型。你可以/应该把你的图形定义为类型/接口,imho。 – c69

元组是目前有点棘手的打字稿的工作。数组文字可能会被意外推断为数组类型而不是元组,这是发生在这种情况下的原因。编译器已经将new BehaviorSubject([false, false])解析为类型为BehaviorSubject<boolean[]>的对象,而不检查目标变量的类型。这是一个已知的关注,许多相关问题被张贴在问题追踪器(#16391#15656,甚至更多),并建议已经奠定,以解决它(#10195#16656,...)。

对于那些推断失败特殊情况下,你可能只需要诉诸铸造:

private someBehaviorSubject = new BehaviorSubject([false, false] as [boolean, boolean]);