我正在使用typescript react和meteor编辑一个应用程序。目前我的状态如下:
{user && ( ... )}
只有当访问者是登录用户时,才会显示一些数据。我只想在比赛没有取消的情况下显示数据。所以我试着加上
{user && !tournament.state === 'cancelled' && ( ... )}
这不起作用。我收到以下短绒信息:
运算符“==”不能应用于类型“boolean”和“cancelled”。
我怎样才能解开这个谜?
最佳答案
typescript抱怨是因为您试图将布尔值!tournament.state
与字符串'cancelled'
进行比较。!
符号将把truthy/falsy结果转换为布尔值。这是因为假设tournament.state
等于'cancelled'
:
!tournament.state = !'cancelled' = false
然后,triple equals运算符同时检查值和类型。typescript不仅不喜欢您的代码,而且也不正确,因为
tournament.state
的每个值都将无法通过检查,因为它最终总是作为一个针对字符串的布尔值。你需要的是:{user && tournament.state !== 'cancelled' && ( ... )}
关于javascript - typescript 是否带 bool 值和字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43281137/