2013-09-06 24 views
7

Noch neu bei TypScript, so dass diese Frage für einige von Ihnen dumm klingen mag. Ich habe eine Quick-Info-Klasse wie folgt aus:TypeScript: Zugriff statische Methode einer Klasse

class ToolTip{ 
    public static show (str:string):void{ 
     console.log ("ToolTip show():" + str); 
    } 
    public static hide():void{ 
     console.log ("ToolTip hide()"); 
    } 
} 
export = ToolTip; 

Und ich will es von einer anderen Klasse nennen

import ToolTip = require ("app/view/common/Tooltip"); 

class Button { 
...... 
    private handleMouseEvent(event:MouseEvent):void { 
     switch (event.type) { 
      case "mouseover": 
       ToolTip.show("tool tip string"); 
       break; 
      case "mouseout": 
       ToolTip.hide(); 
       break;    
     } 
    } 
...... 
} 

export = MenuItem; 

Aber es gibt mir diese Fehlermeldung:

Uncaught TypeError: Object app/view/common/Tooltip has no method 'show' 

Jede Idee, wie sie zu beheben Dies?

+0

Das funktioniert für mich. Verwenden Sie 0.9.1.1? –

+0

Ich benutze auch 0.9.1.1, benutze Webstorm EAP, um es zu kompilieren –

+0

Ich glaube nicht, dass Webstorm automatisch den neuesten TypeScript-Compiler abholt. Können Sie das Problem mit 'tsc.exe' reproduzieren? –

Antwort

3

Wie Sie den Code funktioniert gut sehen kann (kompiliert und Läufe):

enter image description here

So mögliche Gründe, warum wäre es nicht für Sie arbeiten:

  • Sie nicht kompilieren mit der Option --module commonjs (Video Tutorial)
  • Sie haben einen Ordner namens TootTip auf der gleichen Ebene wie Tooltip.ts kann dazu führen, dass nodejs das ausführt, was Sie möglicherweise nicht erwartet haben.
+0

Danke Leute, ich habe den Fehler gefunden. Wenn ich den Dateinamen von "Tooltip" zu "ToolTip" ändere, wird das Javascript nie aktualisiert, also sucht es nach Tooltip.js anstelle von ToolTip.js. –

Verwandte Themen