Global类中的静态成员

时间:2014-09-18 00:30:27

标签: class static typescript

export class Globals
{
   static m_Name : string = "Hello world";
   static m_Version : number = 1.0;
   static m_Canvas : HTMLCanvasElement = null;
   static m_Foo : Foo = null;
}

public OnDocumentLoad() : void
{
     Globals.m_Canvas = <HTMLCanvasElement>document.getElementById('myCanvas');
     Globals.m_Foo = new Foo(m_Name, m_Version);
}

这是否可以在TypeScript中使用static?我不确定静态在这种情况下做什么,除了使成员变量类成员,每个人都可以访问,无论实例如何。但是,例如,Globals类中的m_Foom_Canvas有效实例,有点像单身人士(没有任何未定义的检查,并且可能在OnDocumentLoad之后的任何时候)

最初我没有Globals作为一个类,它们只是我在.ts文件中的泛型var声明我到处都在引用。但我想把它们组织成一个漂亮的小Globals课程。这有助于我迄今为止测试它的经验,但我想看看我是否遗漏了static在这里所做的事情。

我在这个问题上发现的最多的是在规范中: http://www.typescriptlang.org/Content/TypeScript%20Language%20Specification.pdf

  

使用static修饰符的成员声明称为静态成员声明。静态属性   成员声明在构造函数函数类型中声明属性(第8.2.5节),并且必须指定   包含类中所有静态属性成员声明中唯一的名称   静态get和set访问器声明可以成对指定相同名称的异常。   请注意,实例和静态属性成员的声明空间是分开的。因此,这是可能的   使实例和静态属性成员具有相同的名称

从中我可以看出,你可以创建一个Globals实例,其成员与调用Globals.m_Name有不同的含义,但我不打算在这里这样做。

1 个答案:

答案 0 :(得分:5)

如果要创建名称空间对象,请使用module

export module Globals
{
   export var m_Name : string = "Hello world";
   export var m_Version : number = 1.0;
   export var m_Canvas : HTMLCanvasElement = null;
   export var m_Foo : Foo = null;
}