2013-09-06 6 views
7

Все еще новое на TypeScript, поэтому этот вопрос может показаться глупым для некоторых из вас. У меня есть класс ToolTip вроде этого:TypeScript: доступ к статическому методу класса

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

И я хочу, чтобы вызвать его из другого класса

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; 

Но это дает мне эту ошибку:

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

Любая идея, как исправить это?

+0

Это работает для меня. Используете ли вы 0.9.1.1? –

+0

Я тоже использую 0.9.1.1, используя Webstorm EAP для его компиляции –

+0

Я не думаю, что Webstorm автоматически подберет последний компилятор TypeScript. Можете ли вы воспроизвести проблему, используя 'tsc.exe'? –

ответ

3

Как вы можете видеть, что код работает отлично (компилирует и прогонов):

enter image description here

Так возможные причины, почему это не будет работать для вас:

  • Вы не компилировать с опцией --module commonjs (Video Tutorial)
  • У вас есть папка с именем TootTip на том же уровне, что и Tooltip.ts, который может привести к тому, что nodejs будет запускать то, что вы, возможно, не ожидали.
+0

Спасибо, ребята, я нашел ошибку. Когда я меняю имя файла с «Tooltip» на «ToolTip», javascript никогда не обновляется, поэтому он ищет Tooltip.js вместо ToolTip.js. –

Смежные вопросы