TypeScript-Klassenfunktion nicht verfügbar

8

Ich versuche, eine Instanzmethode einer TypeScript-Klasse (in einem ASP.NET MVC-Projekt) aufzurufen. Zur Laufzeit erhalte ich jedoch Ausnahmen wie 0x800a01b6 - JavaScript runtime error: Object doesn't support property or method 'checkString' .

Ich habe das generierte JavaScript in jsfiddle kopiert, wo die Methode zu funktionieren scheint.
Ich bin nicht wirklich ein JavaScript-Typ, also jede Hilfe wird sehr geschätzt!

Dinge, die ich bisher versucht habe:

  1. verschiedene Browser (Chrome: Uncaught TypeError: undefined is not a function , FF: TypeError: this.checkString is not a function )
  2. Löschen von Browser-Caches
  3. Löschen der temporären Dateien von IIS Express
  4. Reinigung und Wiederherstellung der Lösung
  5. Verwenden Sie nicht den privaten Modifikator
  6. Starten des Projekts auf einem anderen Computer
  7. Ersetzen Sie den Aufruf von underscore.js mit einem Dummy, um zu verifizieren, dass das nicht das Problem ist
  8. hat überprüft, dass die Instanzmitglieder korrekt eingestellt sind

Dies ist der TypeScript-Code:

%Vor%

Und hier das generierte JavaScript:

%Vor%     
marce 14.04.2014, 11:23
quelle

2 Antworten

20

Dies liegt wahrscheinlich an der falschen this zur Laufzeit. Sie können eine Lambda-Funktion ()=>{} anstelle von function verwenden, um sicherzustellen, dass die this im generierten JavaScript lexikalisch definiert ist:

%Vor%

Bitte suchen Sie, was this in JavaScript und Typoskript bedeutet, um mehr zu erfahren.

    
basarat 14.04.2014, 12:19
quelle
3

Eine andere Bypass-Lösung:
Anstatt this. zu verwenden, können Sie super. verwenden.

  • Eine Voraussetzung ist, zwei Klassen zu erstellen, eine als Basisklasse, eine andere als Nutzbare Klasse.
  • Die Basisklasse enthält die Methoden, die Sie im Konstruktor aufrufen möchten.
  • Die Usable-Klasse ruft die Methode innerhalb ihres Konstruktors auf, indem sie super.myMethod(); anstelle von this.myMethod(); verwendet.

Dies ist ein subtiler Vorteil, der dank Typoskript leicht möglich ist. :)

Beispiel:
Quelle: Typoskript umgehen Lösung in Stackoverflow

%Vor%     
JThora 21.05.2014 21:20
quelle

Tags und Links