我有一個對應于一個介面的物件陣列,我正在使用一個函式,該函式采用這種陣列并吐出對應于另一個介面的不同物件陣列
它看起來像這樣:
export const filterPagesById = (
items: FirstInterface[],
ids: string[],
): SecondInterface[] => items.filter((route) => ids.includes(route.id));
Typescript 對我大喊 type FirstInterface[]is notassignable to SecondInterface[]。
該函式可以正常作業,并且陣列被轉換為正確的 SecondInterface 型別。我如何“承諾”Typescript 該函式確實會回傳正確的型別?
uj5u.com熱心網友回復:
如果您確定過濾條件將僅保留SecondInterface[]您可以使用cast的專案:
export const filterPagesById = (
items: FirstInterface[],
ids: string[],
): SecondInterface[] => items.filter((route) => ids.includes(route.id)) as SecondInterface[];
uj5u.com熱心網友回復:
TypeScript 對此沒有任何問題:
interface FirstInterface {
id: string
}
interface SecondInterface {
id: string
}
const filterPagesById = (
items: FirstInterface[],
ids: string[],
): SecondInterface[] => items.filter((route) => ids.includes(route.id));
那是因為它知道這兩個介面/型別重疊。
TypeScript 抱怨是有原因的,如果可以的話,您應該嘗試深入了解,而不是使用型別斷言,因為型別斷言不是型別安全的。
你能分享這兩種型別FirstInterface嗎SecondInterface?
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/504834.html
標籤:javascript 打字稿
