Ich versuche herauszufinden, wie man das macht, was ich als "verschachtelte Typ-Assertion" bezeichnen würde.Typescript - verschachtelte, mehrfache Assertion
Typoskript ermöglicht es Ihnen, ein leeres Objekt über eine Schnittstelle als den Typ der Schnittstelle darzustellen. Zum Beispiel:
const fakeRequest = <ExpressCore.Request>{ protocol: 'test-protocol' };
Lassen Sie uns mich geben ein Objekt mit dem Protokollfeld Satz, der als ExpressCore.Request Typ wirkt (die viele Eigenschaften- https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/express-serve-static-core/index.d.ts#L177 hat). Ich kann dies bequem verwenden, um ein Request-Objekt zu nehmen und eine Aussage über das Protokoll zu machen.
Wenn ich versuche, dies mit einer komplexeren Schnittstelle zu tun, zum Beispiel, die ein für Anfrage - https://github.com/request/request - der Compiler sagt ich ich habe drei Innen-Typen zur Verfügung zu stellen:
Generictype 'RequestAPI<TRequest, TOptions, TUriUrl> requires 3 type argument(s).
ich tue Dies geschieht mit den @ types/request typings, die über DefinitelyTyped verfügbar sind.
In der Deklarationsdatei wird RequestAPI definiert durch:
daran gearbeitet export interface RequestAPI<TRequest extends Request, TOptions extends CoreOptions, TUriUrlOptions> {
haben, ich habe ein Objekt über eine Schnittstelle zu behaupten, erfordert eine innere Schnittstelle gefunden Beispiele für die Syntax erforderlich:
const pos = <GeoJSON.Feature<GeoJSON.GeometryObject>>{
"type": "Feature",
"properties":{},
"geometry": {
"type": "Point",
"coordinates": [0, 1]
}
};
Siehe What means "Generic type 'Feature<T>' requires 1 type argument(s)" in Typescript?.
Ich kann jedoch nicht herausfinden, wie man das mit drei inneren Schnittstellen macht. Die folgenden Versuche sind gescheitert:
const foo = { {} as request.Request, {} as request.CoreOptions, {} as request.RequiredUriUrl } as request.RequestAPI;
const fakeRequester = <request.RequestAPI<request.Request><request.CoreOptions><request.RequiredUriUrl>> {{}, {}, {}};
etc ..
Wenn jemand weiß, wie eine verschachtelte, mehrere Behauptung zu handhaben oder könnte darauf hinweisen, was ich falsch mache, es geschätzt würde.