2017-12-28 3 views
3

der Regel durch das Fenster-Objekt zugreifen kann ich in meiner .ts Dateien Zugriff auf etwas Aufruf wie:Fensterobjekt aus .tsx Datei

(<any>window).myObject 

ich in meiner .tsx Dateien Kompilierungsfehlern dafür bin immer. Gibt es eine Möglichkeit, wie ich von einer .tsx Datei darauf zugreifen kann?

Danke.

Antwort

5

Sie können die as-Syntax für die Typbestätigung verwenden. Dies ist die alternative Syntax für Typ Behauptung als <type>obj Konflikte mit JSX Syntax:

(window as any).myObject 

Die oben arbeiten, aber wenn Sie starke Typisierung betrachten wollen augmenting die Window Schnittstelle Ihre Eigenschaft hinzufügen, damit Sie kompilieren erhalten -Zeit Typprüfung:

declare global { 
    interface Window { 
     myObject: YourObjectType; 
    } 
} 
1

die Syntax <type> vom ts Team ist veraltet. Dies liegt daran, dass es zwischen der neuen Syntax und der neuen jsx Syntax zu viel Unklarheit gibt. Stattdessen führte das ts-Team den as-Operator für Typprüfungen ein.

Also diese Syntax:

(window as any).things 

ist Update auf dem neuesten Stand.

Diese Änderung wurde gemacht, weil es im Grunde genommen sehr anfühlt, einem Compiler zu sagen, wann eine solche Syntax sich auf einen Typ oder ein jsx-Element bezieht. Ebenso wird die Notation viel schwieriger zu lesen (unten siehe zum Beispiel):

<Component> 
    {<String>something} 
</Component> 

Einige ausführlichen hier https://basarat.gitbooks.io/typescript/docs/types/type-assertion.html#as-foo-vs-foo und finden Sie hier https://github.com/Microsoft/TypeScript/issues/296

Verwandte Themen