網站搜尋

javascript - Typescript - 過濾器在聯合類型陣列上不起作用


以下是我的類型定義:

export const APPLE = "apple"
export const PEAR = "pear"
export const PLUM = "plum"

export type TAllowedFruits = APPLE | PEAR | PLUM
...

export interface IGroceryCart {
    Fruits : TAllowedFruits,
    Veggies : TAllowedVeggies,
    ...
}

如你所見,我正在指定一個聯合類型,允許水果可以是蘋果、梨或李子。

在我的程式碼的其他地方,我現在有一個排好隊的購物車陣列,對於每個購物車,我想從他們的水果中篩選出蘋果,並且只在使用者介面上顯示梨子和梅子。

所以我確實有像這樣的東西:

const groceryCarts: IGroceryCart[] = getGroceryCarts()

groceryCarts.filter(cart => cart.Fruits !== APPLE).map(item => ...)

然而,我的使用者介面仍然顯示所有三種水果,而不只是梨子和李子。如果我這麼做:

groceryCarts.filter(cart => cart.Fruits !=='apple').map(item => ...)

然後,過濾過程適當地發生。

有人可以幫我弄清楚為什麼會發生這種情況嗎?另外,請原諒這個生硬的例子,但這是我能想到的最好方式來說明重點。