erweitern Wenn Funktionalität in typescript
mit anonymen Typen zum Beispiel wie folgt verketten:Wie anonymen Typ in Typoskript
let array = [{ seed: 2 }, { seed: 3 }];
array
.map(i => ({ seed: i.seed, square: i.seed * i.seed }))
.forEach(i => console.log(`square for ${i.seed} is ${i.square}`));
ich neue anonymen Typ für Map-Funktion definieren müssen. Wenn ich mehrere Schritte hätte, die alle neue Eigenschaften erzeugen würden, würde ich am Ende viel Definitionscode schreiben, um alle Eigenschaften zu übernehmen. Ich könnte $.extend
(oder Object.assign
) verwenden, aber auf diese Weise werde ich Intellisense und starke Typisierung verlieren.
array
.map(i => $.extend(i, { square: i.seed * i.seed }))
.forEach(i => console.log(`square for ${i.seed} is ${i.square}`));
Wie kann ich anonyme Objekte erweitern, ohne alle Eigenschaften neu definieren zu müssen, während ich stark typisiere?
Sie definieren noch Samen wieder in Rückgabewert. Wie wäre es, wenn es 5 Parameter gibt und map einen Parameter hinzufügt. Was für ein Durcheinander wäre das. –
@JukkaVaris verwenden Sie also die erste Lösung mit den Schnittstellen. Es gibt keine Möglichkeit (das ist mir bewusst), es zu erweitern, sonst –
Ich habe Angst davor. Mein tatsächlicher Anwendungsfall ist mit RxJS und dort können Ketten ziemlich lang sein. Interface Graph würde leicht aus der Hand wachsen. Ich verwende anonyme Typen, um die Menge an Code zu reduzieren, die ich schreiben muss, und ich würde gerne sehen, dass der Compiler Typen von der Verwendung ableiten kann. –