Ich verwende TypeScript, um einen API-Wrapper für einen XML-REST-Service zu implementieren. Alle Anforderungen und Antworten werden in einem Schema beschrieben, und ich konnte cxsd und cxml verwenden, um entsprechende TypeScript- und JS-Definitionen zu generieren. Aber ich bin verwirrt über den von cxsd erzeugten Code. Das Beispiel ist in the repo, hier ist die vereinfachte Version:Fehler beim Verwenden der von cxml generierten TypeScript-Schnittstellen
interface _foo {
a: string;
b: bar;
}
interface foo extends _foo { constructor: { new(): foo } }
var foo: { new(): foo };
interface _bar {
c: string;
}
interface bar extends _bar { constructor: { new(): bar } }
var bar: { new(): bar };
Was constructor: { new(): foo }
überhaupt bedeutet?
Ich muss diese Objekte selbst erstellen, um das XML zu erstellen und es an das API-Backend zu senden, aber ich bin nicht in der Lage, dies zu tun. Der Versuch, so etwas wie:
let obj: foo = {
a: "Test1",
b: {
c: "Test2"
}
}
ich diesen Fehler:
scripts/foo.ts (13,5): Type '{ a: string; b: { c: string; }; }' is not assignable to type 'foo'.
Types of property 'constructor' are incompatible.
Type 'Function' is not assignable to type 'new() => foo'.
Type 'Function' provides no match for the signature 'new(): foo' (2322)
Wie könnte ich schaffen diese Objekte? Die gesamte Idee, TypeScript zu verwenden, besteht darin, zu verifizieren, dass sie zu 100% mit dem ursprünglichen XSD-Schema kompatibel sind.