2016-04-27 125 views
0

我正在将JavaScript代码转换为TypeScript,并坚持转换我的类定义的最佳方式。TypeScript是否支持名称空间类的类声明?

它们从Marionette扩展而来,类名是命名空间。例如,这个JavaScript使用“XYZ”的命名空间:

xyz.Marionette.AppRouter = Marionette.AppRouter.extend({ 
    instance_name: "AppRouter", 

    functionName: function(options) { 
    } 
}); 

我试图在打字稿创建该类相应命令:

class xyz.Marionette.AppRouter extends Marionette.AppRouter { 

但是这句法似乎并不支持。

是可以声明一个类的打字稿与命名空间?

下面的答案(到目前为止)是有帮助的,但我仍然不知道如何表达这个定义,或者即使这是可能的。

回答

0

类nameSpace.Marionette.AppRouter扩展Marionette.AppRouter {

声明命名空间和然后类:

namespace nameSpace.Marionette { 
    export class AppRouter { 

    } 
} 
+0

谢谢,那很好用! 我仍然不完全确定如何定义类,尽管就扩展而言。它是否进入出口类?或者在命名空间块下?两者都生成TypeScript错误。先谢谢你。 – Marc

0

我想嘲笑他了,但有一个问题,引用基础AppRouter因为命名空间相同。如果我在第一个命名空间中添加“base”的限定符,它就可以工作。

namespace base.Marionette { 

    export class AppRouter { 

     Foo() { 
      return "Hello"; 
     } 
    } 
} 

namespace nameSpace.Marionette { 

    export class AppRouter2 extends base.Marionette.AppRouter { 

     Bar() { 
      var hello = this.Foo(); 
     } 
    } 
} 
+0

非常感谢您的帮助。我仍然在努力理解为什么我不能在TypeScript中编写这样的代码: class nameSpace.Marionette.AppRouter extends Marionette.AppRouter {instance}:string; }); 我错过了什么吗? – Marc