Ich habe Apfel und Birnen - beide haben ein isDecayedAttribut:
interface Apple {
color: string;
isDecayed: boolean;
}
interface Pear {
weight: number;
isDecayed: boolean;
}
Und beide Sorten können (mehrmals) in meinem Obstkorb sein:
interface FruitBasket {
apples: Apple[];
pears: Pear[];
}
Nehmen wir an, mein Korb ist vorerst leer:
const fruitBasket: FruitBasket = { apples: [], pears: [] };
Jetzt nehmen wir zufällig eine Sorte aus dem Korb:
const key: keyof FruitBasket = Math.random() > 0.5 ? 'apples': 'pears';
const fruits = fruitBasket[key];
Und natürlich mag niemand verfallene Früchte, also pflücken wir nur die frischen:
const freshFruits = fruits.filter((fruit) => !fruit.isDecayed);
Leider sagt mir Typescript:
Ein Ausdruck, dessen Typ keine Anrufsignatur hat, kann nicht aufgerufen werden. Geben Sie '((callbackfn: (Wert: Apple, Index: Nummer, Array: Apple []) => any, thisArg?: Any) => Apple []) | ein ... 'hat keine kompatiblen Rufsignaturen.
Was ist hier falsch - ist es nur so, dass Typescript keine frischen Früchte mag oder ist dies ein Typescript-Fehler?
Sie können es selbst im offiziellen Typescript Repl versuchen .