我正在使用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/

10-10 15:21