Ich arbeite an einer ng2-Implementierung. Ich verwende den folgenden Funktionsaufruf, um ein Objekt in ein Array zu konvertieren:
var authors = Object.entries(responseObject.Authors);
Dies ist eine Standard-js-Funktion. Der ts-Compiler gibt jedoch den folgenden Fehler zurück:
"Property 'entries' does not exist on type 'ObjectConstructor'"
Basierend auf einem schnellen Google-Ansatz scheint die Lösung darin zu bestehen, die compilerOptions-Zieleigenschaft von es5 in es6 zu ändern. Nach einigen früheren Recherchen für eine frühere Ausgabe dachte ich jedoch, dass ich die es6-Funktionalität nutzen kann, indem ich die zusätzliche Eigenschaft "lib" in meine tsconfig.json unten einbinde:
"compilerOptions": {
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"module": "commonjs",
"noEmitOnError": true,
"noImplicitAny": false,
"outDir": "../Scripts/",
"removeComments": false,
"sourceMap": true,
"target": "es5",
"moduleResolution": "node",
"lib": [
"es2015",
"dom"
]
}
Ich habe auch versucht, die Zieleigenschaft in es2015 zu ändern und dann das Projekt neu zu erstellen und "typescriptUsingTsConfig" auszuführen, aber ich erhalte immer noch den gleichen Fehler. Haben Sie eine Idee, was ich hier tun kann, um die Funktion Object.entries () zu nutzen?
quelle
lib
Compileroption noch nicht verwendet haben, gibt es möglicherweise einen Standardwert basierend auf Ihrem Ziel, der beim Festlegen überschrieben wirdlib
. Eine Liste der Standardeinstellungen finden Sie in der Dokumentation zu den Compileroptionen . Ich musste auch explizit die Standardparameterlib
für mein Ziel hinzufügenes2017.object
.lib
statt zu aktualisierentarget
?"target": "es2017"
bedeutet beispielsweise, dassasync
Funktionen für ältere Laufzeiten nicht transformiert werden. Dies ist falsch, da beabsichtigt wurde, die Verwendung zusätzlicher Bibliotheken zu ermöglichen und die Ausgabesyntax nicht zu ändern.Die akzeptierte Antwort hat bei mir nicht funktioniert, aber ich habe die Antwort aus der Eigenschaft 'zuweisen' angepasst. Sie existiert nicht für den Typ 'ObjectConstructor' wie folgt :
const changedFields = (<any>Object).entries(this.ngForm.form.controls) .filter(value => value[1].dirty);
Teilen für alle mit der gleichen Situation
quelle
--lib
--target
--lib