2017-04-07 132 views
1

我正在編輯使用TypeScript React和流星的應用程序。目前我得到以下狀態:打字稿如果和如果不與布爾和字符串

{user && (...)} 

這隻顯示一些數據,如果訪問者是登錄用戶。我雖然想顯示數據只有如果比賽是不是取消。所以我試圖加

{user && !tournament.state === 'cancelled' && (...)} 

哪個不行。我收到以下短信息:

運算符'==='不能應用於類型'布爾值'和''已取消''。

我該如何解決這個難題?

+1

......必須有一個dupetarget這個。 –

回答

2

打字稿抱怨,因爲您要比較一個布爾值: !tournament.state轉換爲字符串:'cancelled'

!符號是要轉truthy/falsy結果爲布爾。這是因爲假設tournament.state等於'cancelled'

!tournament.state = !'cancelled' = false 

三重等號操作者然後檢查兩個類型。您的代碼不僅會被TypeScript所厭惡,而且也是不正確的,因爲tournament.state的每個值都會使檢查失敗,因爲它總是以針對字符串的布爾值結束。你需要的是:

{user && tournament.state !== 'cancelled' && (...)} 
5

!tournament.state否定tournament.state,不跟隨,導致truefalse的那部分,讓您true === 'cancelled'false === 'cancelled'. Hence the issue with using ===`一個布爾和字符串===

使用!==

{user && tournament.state !== 'cancelled' && 

技術上講,你可以使用括號爲好,但它不會是地道:

{user && !(tournament.state === 'cancelled') &&