2个布尔的打字稿元组被推断为类型的数组布尔
问题描述:
我试图做两个布尔值的元组在我BehaviorSubject
2个布尔的打字稿元组被推断为类型的数组布尔
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
答
元组是目前有点棘手的打字稿的工作。数组文字可能会被意外推断为数组类型而不是元组,这是发生在这种情况下的原因。编译器已经将new BehaviorSubject([false, false])
解析为类型为BehaviorSubject<boolean[]>
的对象,而不检查目标变量的类型。这是一个已知的关注,许多相关问题被张贴在问题追踪器(#16391,#15656,甚至更多),并建议已经奠定,以解决它(#10195,#16656,...)。
对于那些推断失败特殊情况下,你可能只需要诉诸铸造:
private someBehaviorSubject = new BehaviorSubject([false, false] as [boolean, boolean]);
您可以包括'BehaviorSubject'的完整定义?另外,请包含您的TypeScript版本。 –
*作为一个品味问题 - 在你给出的例子中,'boolean []'是一个合理的推断类型。你可以/应该把你的图形定义为类型/接口,imho。 – c69