我正在編輯使用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這個。 –