我在我的 react 專案中嘗試了這個 if。
if (
(role !== UserRoleEnum.Admin || role !== UserRoleEnum.Employee) &&
(project.state === ProjectState.online || project。 state === ProjectState.onhold)
) { }
我得到這樣的錯誤反饋
這個條件將總是回傳'true',因為型別是 UserRoleEnum.Admin'和'UserRoleEnum.Employee'沒有重合。 TS2367
我如何設定這個最好的方法,即我在一個if陳述句中得到所有的東西。
我想檢查是否
- 用戶不是管理員或不是雇員 和
- 專案的狀態是在線或擱置 。
uj5u.com熱心網友回復:
如果你想檢查用戶是管理員還是雇員,你不應該這樣做嗎?
if ((role === UserRoleEnum.Admin) || (role === UserRoleEnum.Employee)
注意,你在你的原始代碼上否定了這種比較。role !== UserRoleEnum.Admin
這可能是你得到編譯錯誤的原因,因為這些型別似乎沒有重疊,在這個比較中你將總是得到一個true:
if ((role !== UserRoleEnum.Admin) || (role !== UserRoleEnum.Employee)
你在這里得到false的唯一方法是如果Admin和Employee有一些共同點,說明role不可能是兩者。否則,當role是一個Admin時,它不是一個Employee,所以你得到true,當它是一個Employee時,它不是一個Admin,你也得到true。
uj5u.com熱心網友回復:
我想檢查是否
- 用戶不是管理員或者不是雇員,并且
- 專案的狀態是在線或擱置
。
錯誤資訊具體指的是該組中的第一個條件。 除非任何給定的用戶有可能同時是管理員和雇員(而編譯器告訴你這是不可能的),那么這個條件將永遠是真。 系統中的每個用戶總是至少不是這兩件事中的一件。
根據問題中的評論,你已經確認這正是你想要的邏輯:
。David:那么你的意思是 "不是管理員也不是雇員 "嗎? user1551496: 不,我的意思是 "不是管理員或不是雇員"
。
由于你的預期條件是總是真,你有兩個選擇:
完全洗掉條件,只是一直執行if塊中的邏輯;或者
只需洗掉條件的第一部分,但仍檢查其余部分:
if (project.state ==ProjectState. online || project.state === ProjectState.onhold)
{ }
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/314514.html
標籤:
上一篇:C語言中的"AND"運算子和"OR"運算子的區別是什么?
下一篇:使類開放,但內部
