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_Foo
和m_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
有不同的含义,但我不打算在这里这样做。
答案 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;
}