我正在编辑使用TypeScript React和流星的应用程序。目前我得到以下状态:打字稿如果和如果不与布尔和字符串
{user && (...)}
这只显示一些数据,如果访问者是登录用户。我虽然想显示数据只有如果比赛是不是取消。所以我试图加
{user && !tournament.state === 'cancelled' && (...)}
哪个不行。我收到以下短信息:
运算符'==='不能应用于类型'布尔值'和''已取消''。
我该如何解决这个难题?
我正在编辑使用TypeScript React和流星的应用程序。目前我得到以下状态:打字稿如果和如果不与布尔和字符串
{user && (...)}
这只显示一些数据,如果访问者是登录用户。我虽然想显示数据只有如果比赛是不是取消。所以我试图加
{user && !tournament.state === 'cancelled' && (...)}
哪个不行。我收到以下短信息:
运算符'==='不能应用于类型'布尔值'和''已取消''。
我该如何解决这个难题?
打字稿抱怨,因为您要比较一个布尔值: !tournament.state
转换为字符串:'cancelled'
。
的!
符号是要转truthy/falsy结果为布尔。这是因为假设tournament.state
等于'cancelled'
:
!tournament.state = !'cancelled' = false
三重等号操作者然后检查两个值和类型。您的代码不仅会被TypeScript所厌恶,而且也是不正确的,因为tournament.state
的每个值都会使检查失败,因为它总是以针对字符串的布尔值结束。你需要的是:
{user && tournament.state !== 'cancelled' && (...)}
!tournament.state
否定tournament.state
,不跟随,导致true
或false
的那部分,让您true === 'cancelled'
或false === 'cancelled'. Hence the issue with using
===`一个布尔和字符串===
。
使用!==
:
{user && tournament.state !== 'cancelled' &&
技术上讲,你可以使用括号为好,但它不会是地道:
{user && !(tournament.state === 'cancelled') &&
......必须有一个dupetarget这个。 –