如何将Type.registerNamespace转换为TypeScript?

如何将Type.registerNamespace转换为TypeScript?,typescript,Typescript,我正在尝试将一些javascript转换为TypeScript,但我不知道TypeScript是否支持名称空间。我们的代码如下所示: /// <reference name="MicrosoftAjax.js"/> Type.registerNamespace("MyNamespace.Controls.FloatingErrorPane"); MyNamespace.Controls.FloatingErrorPane = function (element) { ... } M

我正在尝试将一些javascript转换为TypeScript,但我不知道TypeScript是否支持名称空间。我们的代码如下所示:

/// <reference name="MicrosoftAjax.js"/>
Type.registerNamespace("MyNamespace.Controls.FloatingErrorPane");

MyNamespace.Controls.FloatingErrorPane = function (element)
{
...
}
MyNamespace.Controls.FloatingErrorPane.prototype =
{
...
}

ErrorPane”,this.ClientID);

您可以使用嵌套的模块和类来获得名称空间样式的语法

第一个例子与你问题中的例子相匹配

module MyNamespace {
    export module Controls {
        export class FloatingErrorPane {
            constructor(private element: HTMLElement) {
            }
        }
    }
}

var errorPane = new MyNamespace.Controls.FloatingErrorPane(myElement);
如果愿意,您可以跨多个文件声明模块,因此第二个文件可以通过再次声明来添加到
MyNamespace

module MyNamespace {
    export module Messaging {
        export class MessageHandler {

        }
    }
}

是的,您可以使用.notation创建嵌套名称空间,例如

module MyNamespace.Controls {
    export class FloatingErrorPane {
        constructor(element: HTMLElement) {
        }
    }
}

var errorPane = new MyNamespace.Controls.FloatingErrorPane(myElement);
或者,您可以使用Sohnee所示的语法,在该语法中,您可以依次声明模块。但是,您不能以这种方式直接定义类或函数。因此,这是无效的:

MyNamespace.Controls.FloatingErrorPane = function() { ... }

您是否在
.prototype
之后留下了一些内容?或者您正在尝试从超类继承吗?(如果要从超类继承,您可以按照@Sohnee所说的做,只需添加
导出类FloatingErrorPane扩展您的超类。{
您不必嵌套模块。您只需指定:module MyNamespace.Controls即可{…}很好的观察-很好。
MyNamespace.Controls.FloatingErrorPane = function() { ... }