versuchen SchlüsselKonvertieren von Objektschlüssel
import { Url, parse } from "url";
export class HalJson {
_links: Links;
}
export class HalLinks implements Links {
toUrl(rel: string): Url {
let link = <Link> this[rel];
return parse(link.href);
}
[text: string]: Link;
}
export interface Links {
[text: string]: Link;
toUrl(rel : string) : Url;
}
export interface Link {
href: string;
}
aber ich bekomme diese Fehlermeldung
[default] C:\Users\xeno\IdeaProjects\rpf-ui\src\util\Hal.ts:7:5
Property 'toUrl' of type '(rel: string) => Url' is not assignable to string index type 'Link'.
[default] C:\Users\xeno\IdeaProjects\rpf-ui\src\util\Hal.ts:16:5
Property 'toUrl' of type '(rel: string) => Url' is not assignable to string index type 'Link'.
hier ist der Instanziierung-Code, der funktioniert (ohne die toUrl
Code)
client.fetch('').then(response => {
return response.json();
}).then(json => {
let hal: HalJson = Object.assign(new HalJson(), json);
hal._links = Object.assign(new HalLinks(), hal._links);
log.debug("json", hal);
ich konvertieren Ich versuche herauszufinden, wie ich ein Url
Objekt von meinemzurückbekommen kannNutzlast
(alternativ, wenn jemand irgendwelche Typoskript Definitionen Bibliotheken kennt, die hal json Links nehmen würde und es streng typisierte machen, fühlen Sie sich frei in den Kommentaren zu erwähnen) können
Wie erstellen Sie eine Instanz von 'HalLinks'? –
@NitzanTomer hinzugefügt, nicht, dass es so hilfreich sein wird – xenoterracide
Ich glaube nicht, was Sie tun, ist erlaubt. Der Indexer ist die bevorzugte Übereinstimmung für * all * -Eigenschaften, daher versucht der Compiler, HalLinks # toUrl als nur einen anderen String-Index zu prüfen. Wenn Sie versuchen, Ihrer Schnittstelle eine Eigenschaft hinzuzufügen, die nicht vom Typ "Link" (oder einem Subtyp) ist, erhalten Sie einen Kompilierungsfehler. Könnte ein Compiler-Fehler sein, dass dies bei Methoden nicht passiert. –